我们要求使用JPA将记录插入两个数据源。
解决这个问题的正确方法是什么?
我们如何使用不同的数据源声明不同的持久性单元并管理两个实体管理器并使用默认持久化上下文注入默认单元名称,而不提及第一个数据源的泛型dao中的单元名称并覆盖具有单元名称的上下文第二个数据源中其他表的单独dao。
弹簧文档非常有限,没有示例。
示例会有很大的帮助。
答案 0 :(得分:0)
使用
<bean class="..." primary="true" />
如果您正在使用注释,请或@Primary
。
这表明一个实例是您定义多个不同实例的类型的“默认”实例(如您的EntityManagerFactory)。
答案 1 :(得分:0)
如果您按照本教程http://javacodegeeks.blogspot.com/2010/05/jboss-42x-spring-3-jpa-hibernate.html进行操作,则可以进行以下更改以访问两个不同的数据库:
persistence.xml,为您的第二个数据库定义第二个pesristence-unit。 spring.xml,用不同的名称定义第二个entityManagerFactory bean,让我们说&#34; entityManagerFactoryDB2&#34;并将其配置为使用第二个数据库的持久单元。 对于您要访问第二个数据库的每个DAO,包括以下内容:
@Autowired
private EntityManagerFactory entityManagerFactoryDB2;
@PostConstruct
public void init() {
super.setEntityManagerFactory(entityManagerFactoryDB2);
}
多数民众赞成!
在Spring服务类上,像往常一样使用DAO!