我需要帮助设置一个应用程序,它将我们内部(主)MS SQL数据库DB1中的数据子集复制到另一个MySQL数据库DB2,它运行在Web应用程序的Web服务器上(即我想要同步那两个数据库)。这些表在两个数据库上具有相同的名称,尽管在DB2上只定义了属性/列的子集。我想使用(xml-configured)spring,spring data jpa(即JpaRepository接口)和hibernate作为jpa-provider,因为我想用这些工具建立知识。
据我所知,其他讨论的基本思路是定义spring使用两个entityManagerFactory bean,每个使用一个distinc dataSource(每个数据库一个),根据:
spring jpa hibernate with more datasources
然后,我可以注入持久性单元特定的EntityManagers并使用这些操作进行数据库操作。但是我想使用spring-data存储库:目前我定义了一个JPA实体包含。 DB2上我需要的所有表/属性的字段。对于每个实体,我已经设置了一个@ Repository-annotated接口来强制JpaRepository,然后将这些存储库注入到相应的Service-classes中。
有没有办法将这些存储库注入我的servce层,在注入期间为它们分配一个持久性单元(即选择我想要使用的数据库)?我原则上可以定义所有存储库两次,每次为每个数据库使用@PersistenceContext(name =" NameOfPersistenceUnit")注释,但我希望这不是必需的。
有人可以概述我如何使用命名框架实现目标,或者是否有更简单的方法以编程方式在两个数据库之间复制数据。任何帮助表示赞赏。
答案 0 :(得分:1)
看起来非常类似于您希望能够在运行时指向不同数据库但只想保留一组存储库的问题。看看这个帖子是否有帮助.. Spring Data + JPA with multiple datasources but only one set of Repositories