【发布时间】:2015-07-06 20:26:14
【问题描述】:
我需要帮助设置一个应用程序,该应用程序将数据子集从我们的内部(主)MS SQL 数据库 DB1 复制到另一个 MySQL 数据库 DB2,该数据库在 Web 服务器上运行以供 Web 应用程序使用(即我想同步这两个数据库)。尽管在 DB2 上只定义了属性/列的子集,但两个数据库上的表具有相同的名称。我想使用(xml 配置的)spring、spring data jpa(即 JpaRepository 接口)和 hibernate 作为 jpa-provider,因为我想用这些工具积累知识。
据我从其他讨论中了解到,基本思想是定义 spring 以使用两个 entityManagerFactory bean,每个 bean 使用一个不同的数据源(每个数据库一个),根据:
spring jpa hibernate with more datasources
然后我可以注入特定于持久性单元的 EntityManager 并使用它们进行数据库操作。但我想使用 spring-data 存储库:目前我已经定义了一个 JPA 实体,包括。我在 DB2 上需要的所有表/属性的字段。对于每个实体,我都设置了一个带有 @Repository 注释的接口来实现 JpaRepository,然后将这些存储库注入到相应的服务类中。
有没有办法将这些存储库注入我的服务层并在注入期间为它们分配一个持久性单元(即选择我想要使用的数据库)?我原则上可以定义所有存储库两次,每个数据库使用一次 @PersistenceContext(name="NameOfPersistenceUnit") 注释,但我希望这不是必需的。
谁能概述我如何使用命名框架来实现我的目标,或者有没有更简单的方法可以以编程方式在两个数据库之间复制数据。任何帮助表示赞赏。
【问题讨论】:
标签: hibernate jpa spring-data