我如何为单个应用程序使用多个数据源来分离公司明智的数据
how can i use multiple data source for a single application to separate company wise data
现在说我的实体模型如下
@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;
}
所有记录都存储在同一个 table 中,目前只有一个数据源。但我想改变这一点。我希望每个公司都有相同的数据库,公司特定数据将被插入到以下公司数据库中。但是服务和存储库方法将是 same.i 希望以不需要更改我的服务和存储库方法的方式实现此目的。
我从这个 link 中得到了一些想法。 https://blogs.sap.com/2016/12/19/developing-multi-tenant-applications-on-hcp-persistence-multitenancy-part-4/。但我想要一些更复杂的实施指南。
你要实现的叫水平分区或者分库,看看Database sharding and JPA
https://www.javaworld.com/article/2073449/think-twice-before-sharding.html
其他选项,简单的一个
https://www.mysql.com/products/cluster/scalability.html
最终使用休眠作为 ORM 并使用多租户能够在 mysql 数据库中解决此问题。
eclipse link 不支持多租户使用 mysql.they 需要 Oracle Rack。
现在说我的实体模型如下
@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;
}
所有记录都存储在同一个 table 中,目前只有一个数据源。但我想改变这一点。我希望每个公司都有相同的数据库,公司特定数据将被插入到以下公司数据库中。但是服务和存储库方法将是 same.i 希望以不需要更改我的服务和存储库方法的方式实现此目的。
我从这个 link 中得到了一些想法。 https://blogs.sap.com/2016/12/19/developing-multi-tenant-applications-on-hcp-persistence-multitenancy-part-4/。但我想要一些更复杂的实施指南。
你要实现的叫水平分区或者分库,看看Database sharding and JPA
https://www.javaworld.com/article/2073449/think-twice-before-sharding.html
其他选项,简单的一个 https://www.mysql.com/products/cluster/scalability.html
最终使用休眠作为 ORM 并使用多租户能够在 mysql 数据库中解决此问题。 eclipse link 不支持多租户使用 mysql.they 需要 Oracle Rack。