Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 使用相同实体/存储库的两个数据源使用SpringDataJPA_Hibernate_Jpa_Spring Data - Fatal编程技术网

Hibernate 使用相同实体/存储库的两个数据源使用SpringDataJPA

Hibernate 使用相同实体/存储库的两个数据源使用SpringDataJPA,hibernate,jpa,spring-data,Hibernate,Jpa,Spring Data,我需要帮助设置一个应用程序,将内部(主)MS SQL数据库DB1中的数据子集复制到另一个MySQL数据库DB2,该数据库运行在Web服务器上,供Web应用程序使用(即,我想同步这两个数据库)。这两个表在两个数据库上具有相同的名称,尽管在DB2上只定义了属性/列的子集。我想使用(xml配置的)spring、spring数据jpa(即JpaRepository接口)和hibernate作为jpa提供者,因为我想用这些工具积累知识 就我从其他讨论中了解到的情况而言,基本思想是定义spring使用两个e

我需要帮助设置一个应用程序,将内部(主)MS SQL数据库DB1中的数据子集复制到另一个MySQL数据库DB2,该数据库运行在Web服务器上,供Web应用程序使用(即,我想同步这两个数据库)。这两个表在两个数据库上具有相同的名称,尽管在DB2上只定义了属性/列的子集。我想使用(xml配置的)spring、spring数据jpa(即JpaRepository接口)和hibernate作为jpa提供者,因为我想用这些工具积累知识

就我从其他讨论中了解到的情况而言,基本思想是定义spring使用两个entityManagerFactory bean,每个bean使用一个distinc数据源(每个数据库一个),如下所示:

然后,我可以注入持久化单元特定的EntityManager,并使用它们执行数据库操作。但是我想使用spring数据存储库:目前我已经为DB2上需要的所有表/属性定义了一个JPA实体,包括字段。对于每个实体,我都设置了一个@Repository注释接口,该接口包含JpaRepository,然后将这些存储库注入到相应的服务类中

有没有办法将这些存储库注入我的服务层,并在注入过程中为它们分配一个持久性单元(即选择我要使用的数据库)?原则上,我可以使用@PersistenceContext(name=“NameOfPersistenceUnit”)注释为每个数据库定义两次所有存储库,但我希望这不是必需的


有没有人能概述一下我如何使用命名的框架实现我的目标,或者有没有更简单的方法以编程方式在两个数据库之间复制数据。非常感谢您的帮助。

看起来非常类似于这样一个问题:您希望能够在运行时指向不同的数据库,但只希望保留一组存储库。看看这条线是否有用