【问题标题】:Difference between Spring JtaTransactionManager and HibernateTransactionManagerSpring JtaTransactionManager 和 HibernateTransactionManager 的区别
【发布时间】:2016-07-01 22:23:23
【问题描述】:
Spring JtaTransactionManager 和 HibernateTransactionManager 之间有什么区别,什么时候在我的应用程序中使用它们?我知道 HibernateTransactionManager,如果我使用 Hibernate 作为我的 ORM 工具,我可以使用它,但我不明白何时使用 JtaTransactionManager。
【问题讨论】:
标签:
java
spring
hibernate
jpa
spring-transactions
【解决方案1】:
HibernateTransactionManager 用于在单个 Hibernate SessionFactory 之上管理事务。如果您的应用程序仅使用符合 JDBC 的数据库来存储您使用 Hibernate 访问的数据(即不涉及 ERP、JMS 队列、文件系统等),则可以在您的应用程序中使用HibernateTransactionManager。
但是,如果您的业务操作可以同时修改多个数据存储,并且需要确保所有存储之间的数据一致性,则需要使用 JTA 事务。 JTA 支持由 JBoss、WebLogic 或 WebSphere 等 JavaEE 容器或 Atomikos 或 Bitronix 等第三方 JTA 提供程序提供。 JtaTransactionManager 使您能够将 JTA 提供程序与您的 Spring 应用程序集成。 JtaTransactionManager 仅促进 JTA 事务提供者的集成,本身并不是提供者。想要参与事务的底层数据源也应该支持 JTA 事务,通常在驱动层实现。例如,大多数 JDBC 驱动程序都有 JTA 和非 JTA 实现。