Spring JtaTransactionManager和HibernateTransactionManager之间的区别

6

Spring中的JtaTransactionManagerHibernateTransactionManager有什么区别?在我的应用程序中何时使用其中之一?我知道如果我使用Hibernate作为ORM工具,我可以使用HibernateTransactionManager,但我不明白何时使用JtaTransactionManager

1个回答

14

HibernateTransactionManager 用于在单个 Hibernate SessionFactory 的基础上管理事务。 如果您的应用程序仅使用符合 JDBC 标准的数据库存储数据(即,不涉及 ERP、JMS 队列、文件系统等),并使用 Hibernate 访问这些数据,则可以在应用程序中使用 HibernateTransactionManager

但是,如果您有能够同时修改多个数据存储区并且需要确保所有存储区的数据一致性的业务操作,则需要使用 JTA 事务。 JTA 支持由 JavaEE 容器(如 JBoss、WebLogic 或 WebSphere)或第三方 JTA 提供商(如 Atomikos 或 Bitronix)提供。JtaTransactionManager 使您能够将 JTA 提供商集成到 Spring 应用程序中。JtaTransactionManager 仅促进了 JTA 事务提供商的集成,而本身并不是一个事务提供商。 您希望参与事务的底层数据源也应支持 JTA 事务,这通常在驱动程序层实现。例如,大多数 JDBC 驱动程序都有 JTA 和非 JTA 实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接