如何定义不同数据源的实体之间的关系?

时间:2015-02-04 09:36:02

标签: java spring jpa orm

我正在设计一个将使用来自多个数据库的数据的应用程序。我将使用JPA实现持久性和Spring作为主要的应用程序框架。

我需要处理跨越不同数据源的事务。 Googlin'我发现JtaTransactionManager可能对实现它有用。

但我也想在属于不同数据源的实体之间创建关系(在应用程序级别)。 这样我就可以像数据层一样组成一个数据库,而不必担心实体“来自”的来源。

JtaTransactionManager让我这样做,或者我需要在Spring中使用一些额外的组件或配置?

1 个答案:

答案 0 :(得分:0)

我知道您的问题不存在简单的解决方案。

JtaTransactionManager将负责在同一事务中使用不同数据库/数据源执行操作,但您不会保证数据一致性由任何数据库(如数据库之间的外键)。

此外,JPA不支持不同数据库之间的@ManyTo*关系(例如EntityFromDb1OneToOne关系tp EntityFromDb2),因此解决方案将是使用相应的ID。之后,管理这些关系是您的任务。当然,代表你做一些工作,你可以自动化关系的负载,但还有更多的东西,比如级联,锁定,加入两个数据库的查询......