Spring JtaTransactionManager和HibernateTransactionManager之间的区别

时间:2016-03-16 07:10:33

标签: java spring hibernate jpa spring-transactions

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

1 个答案:

答案 0 :(得分:9)

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实现。