我应该使用哪个事务管理器(JTA vs JPA)?

时间:2014-10-21 08:47:00

标签: spring jpa jta

我有春季4申请。目前我使用JpatransactionManager。

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

你能告诉我如何选择交易经理吗?

例如,我什么时候应该使用jta事务管理器和jpa时,它们有什么好处和缺点?

我知道我有两种方式在春天工作。首先是JPA方式和第二种Hibernate方式。第一个包括java标准注释和标准api,第二个是hibenrate实现。如果我需要使用JTA,我必须使用hibernate而不是JPA,不是吗?

1 个答案:

答案 0 :(得分:23)

如果要将托管事务委派给Application Server并处理跨多个资源的复杂事务,则需要使用JtaTransactionManager,但我相信在大多数情况下不需要它。 阅读本文以获取更多信息http://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/transaction.html

  

您是否需要应用程序服务器进行事务管理?

     

Spring Framework的事务管理支持发生了变化   关于企业Java应用程序何时需要的传统规则   应用程序服务器。

     

特别是,您不需要应用程序服务器   通过EJB进行声明式事务。事实上,即使你的   应用服务器具有强大的JTA功能,您可以自行决定   Spring Framework的声明式事务提供了更多的功能和一个   比EJB CMT更高效的编程模型。

     

通常,您只需要应用服务器的JTA功能   应用程序需要处理跨多个资源的事务,   这不是许多应用程序的要求。很多高端   应用程序使用单个高度可伸缩的数据库(例如Oracle)   RAC)相反。独立的事务管理器,如Atomikos   交易和JOTM是其他选择。当然,你可能需要其他的   应用程序服务器功能,如Java消息服务(JMS)和   Java EE连接器体系结构(JCA)。

     

Spring Framework让您可以选择何时扩展   应用程序到满载的应用程序服务器天已经过去了   当使用EJB CMT或JTA的唯一替代方法是编写代码时   使用本地事务,例如JDBC连接上的事务,并面对a   如果您需要在全球范围内运行该代码,那么重大工作,   容器管理的事务。使用Spring Framework,只有一些   您的配置文件中的bean定义,而不是您的   代码,需要改变。

相关问题