Как я могу использовать несколько источников данных для одного приложения, чтобы отделить данные компании - PullRequest
3 голосов
/ 31 марта 2019

скажем, мои модели сущностей теперь выглядят следующим образом

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder(builderClassName = "Builder", toBuilder = true)
@Entity
@Table(name = "clients")
public class Client extends Person {
    @Column(name = "initials")
    private String initials;

    @Column(name = "prefix")
    private String prefix;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "company_Id")
    private Company company;
}

все записи в настоящее время хранятся в одной таблице с одним источником данных. Но я хочу изменить это. Я хочу, чтобы для каждой компании была одна и та же база данных, а данные конкретной компании будут вставлены в следующую базу данных компании. но методы сервиса и репозитория будут одинаковыми. Я хочу добиться этого таким образом, чтобы мои методы сервиса и репозитория не нуждались в изменении.

У меня мало идей по этой ссылке. https://blogs.sap.com/2016/12/19/developing-multi-tenant-applications-on-hcp-persistence-multitenancy-part-4/. но я хочу более изощренное руководство по реализации.

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

наконец, используя hibernate в качестве ORM и используя многопользовательский режим, способный решить эту проблему в базе данных mysql.ссылка eclipse не поддерживает многопользовательский режим с использованием mysql. для этого требуется Oracle Rack.

0 голосов
/ 31 марта 2019

То, что вы хотите достичь, называется горизонтальным разделением или разделением базы данных, посмотрите Разделение базы данных и JPA

https://www.javaworld.com/article/2073449/think-twice-before-sharding.html

Другой вариант, простой https://www.mysql.com/products/cluster/scalability.html

...