如何确保在春季使用单个事务管理器处理多个DB?

时间:2015-05-15 06:28:48

标签: java spring hibernate transactions spring-transactions

我正在为每个数据库使用多个事务管理器(HibernateTransactionManager)。

在一个代码流程中,我相信我为每个数据库启动/完成多个事务。

我想确保所有数据库事务都是单个事务的一部分。我怎么能实现这个目标呢?

One of the post here建议使用JTATransaction manager,我是否应该将它与已经使用的Hibernate结合使用?

虽然我认为在申请的任何阶段执行时,所有交易都将被回滚。

我正在使用Spring 4.1。*和hibernate 3.6。*而不使用任何webcontainer。

1 个答案:

答案 0 :(得分:0)

自从我使用Hibernate以来已经有好几年了,所以如果有任何误导,请提前道歉。

  • 您需要JTA交易。您的DataSources需要支持JTA。
  • 如果您在Weblogic或Websphere等Web容器中运行,那么创建JTA事务很容易。我不认为Tomcat就足够了。从命令行程序,我还没有找到答案。
  • 如果您完全控制这三个数据库,那么您应该没问题。但请注意,涉及Web服务的系统的回滚可能不完整或需要非标准协议(例如,Weblogic仅支持基于t3协议的SOAP JTA)。

如果您得到了结果,请分享,因为该领域的好建议量很少。

(编辑)刚刚注意到你明确表示你没有使用网络容器。如果您遇到命令行程序的解决方案,我们很多人都想知道。构建分布式事务的JUnit测试是我想要做的,但从未找到如何生成JTA事务对象(/ edit>)