我正在设计一个将使用来自多个数据库的数据的应用程序。我将使用JPA实现持久性和Spring作为主要的应用程序框架。
我需要处理跨越不同数据源的事务。 Googlin'我发现JtaTransactionManager
可能对实现它有用。
但我也想在属于不同数据源的实体之间创建关系(在应用程序级别)。 这样我就可以像数据层一样组成一个数据库,而不必担心实体“来自”的来源。
JtaTransactionManager
让我这样做,或者我需要在Spring中使用一些额外的组件或配置?
答案 0 :(得分:0)
我知道您的问题不存在简单的解决方案。
JtaTransactionManager
将负责在同一事务中使用不同数据库/数据源执行操作,但您不会保证数据一致性由任何数据库(如数据库之间的外键)。
此外,JPA
不支持不同数据库之间的@ManyTo*
关系(例如EntityFromDb1
有OneToOne
关系tp EntityFromDb2
),因此解决方案将是使用相应的ID。之后,管理这些关系是您的任务。当然,代表你做一些工作,你可以自动化关系的负载,但还有更多的东西,比如级联,锁定,加入两个数据库的查询......