我想出了一个Spring & Hibernate应用程序,它在其自己的系统数据库中插入/更新,它甚至需要插入/更新具有不同数据库类型的其他系统。多个数据库的事务管理使用Spring&Hibernate
如何在使用不同的数据库执行Hibernate时实现事务管理。
-Bharat
我想出了一个Spring & Hibernate应用程序,它在其自己的系统数据库中插入/更新,它甚至需要插入/更新具有不同数据库类型的其他系统。多个数据库的事务管理使用Spring&Hibernate
如何在使用不同的数据库执行Hibernate时实现事务管理。
-Bharat
这将需要由容器在您的应用程序运行(例如JBoss的应用服务器),或者你需要挂接到一些其他的事务管理器,如Bitronix来完成。在JavaSE应用程序中开箱即用,您只会尝试管理多个数据源之间的事务。
您需要使用XA驱动程序定义到两个数据库的连接,然后确保您的事务管理器正在利用两阶段提交。
如果你不熟悉的全球交易,从这里开始:http://docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html#transaction-global
您可以指定两个独立TXN经理。
<bean id="transactionManager1"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory1" />
<qualifier value="account"/>
</bean>
<bean id="transactionManager2"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory2" />
<qualifier value="businessData"/>
</bean>
一旦设立完成后,你可以使用qualigier指定TXN经理:
假设你正在寻找涉及多个数据源的交易,我强烈建议你把这个系列文章的由David Syer(春季铅)对您的选择:
例如,有些数据库甚至支持跨DAT交易在没有分布式事务的情况下在特定情况下降低模式(请参阅here)。
除了XA两阶段提交事务管理器之外,还有其他选择(因为它们引入了大量开销和复杂性),但它们涉及不同的权衡。
注意:如果您没有同时涉及两个数据库的事务,Dinesh的回答就足够了 –
感谢您的回复,对于我的要求,我不想与任何服务器一起使用,我想制作独立应用程序。 – Bharat