如何定义来自不同数据源的实体之间的关系?
How to define relations among entities from different datasources?
我正在设计一个将使用来自多个数据库的数据的应用程序。我将使用 JPA 来实现持久性和 Spring 作为主要应用程序框架。
我需要处理跨越不同数据源的事务。谷歌了一下,我发现 JtaTransactionManager
对实现这个很有用。
但我还想在属于不同数据源的实体之间创建关系(在应用程序级别)。 这样我就可以像数据层由单个数据库组成一样工作,而不必担心实体 "come from".
的来源
JtaTransactionManager
可以让我这样做吗,或者我需要 Spring 中的一些额外组件或配置?
我知道您的问题没有简单的解决方案。
JtaTransactionManager
将负责在 同一事务 中执行具有 不同 databases/datasources 的操作,但是您将无法获得任何数据库保证的数据一致性(例如数据库之间的外键)。
另外,JPA
不支持不同数据库之间的@ManyTo*
关系(比如EntityFromDb1
有OneToOne
关系tpEntityFromDb2
),所以解决办法将与相应的 ID 一起工作。之后,您的任务就是管理这些关系。当然,通过代表您的一些工作,您可以自动化关系的负载,但还有更多的东西,比如级联、锁定、连接两个数据库的查询...
我正在设计一个将使用来自多个数据库的数据的应用程序。我将使用 JPA 来实现持久性和 Spring 作为主要应用程序框架。
我需要处理跨越不同数据源的事务。谷歌了一下,我发现 JtaTransactionManager
对实现这个很有用。
但我还想在属于不同数据源的实体之间创建关系(在应用程序级别)。 这样我就可以像数据层由单个数据库组成一样工作,而不必担心实体 "come from".
的来源JtaTransactionManager
可以让我这样做吗,或者我需要 Spring 中的一些额外组件或配置?
我知道您的问题没有简单的解决方案。
JtaTransactionManager
将负责在 同一事务 中执行具有 不同 databases/datasources 的操作,但是您将无法获得任何数据库保证的数据一致性(例如数据库之间的外键)。
另外,JPA
不支持不同数据库之间的@ManyTo*
关系(比如EntityFromDb1
有OneToOne
关系tpEntityFromDb2
),所以解决办法将与相应的 ID 一起工作。之后,您的任务就是管理这些关系。当然,通过代表您的一些工作,您可以自动化关系的负载,但还有更多的东西,比如级联、锁定、连接两个数据库的查询...