Spring JtaTransactionManager
和HibernateTransactionManager
之间的区别是什么,以及何时在我的应用程序中使用它?我知道HibernateTransactionManager
我可以使用它,如果我使用Hibernate作为我的ORM工具,但我不明白何时使用JtaTransactionManager
。
答案 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实现。