【问题标题】:which transaction manager should I use (JTA vs JPA)?我应该使用哪个事务管理器(JTA 与 JPA)?
【发布时间】:2014-10-21 08:47:00
【问题描述】:

我有 spring 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,不是吗?

【问题讨论】:

    标签: spring jpa jta


    【解决方案1】:

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

    您需要用于事务管理的应用服务器吗?

    Spring 框架的事务管理支持更改 关于企业 Java 应用程序何时需要的传统规则 应用服务器。

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

    通常,只有在您的 应用程序需要处理跨多个资源的事务, 这不是许多应用程序的要求。很多高端 应用程序使用单一的、高度可扩展的数据库(例如 Oracle RAC) 代替。独立的事务管理器,例如 Atomikos 交易和 JOTM 是其他选项。当然,您可能还需要其他 应用服务器功能,例如 Java 消息服务 (JMS) 和 Java EE 连接器架构 (JCA)。

    Spring 框架让您可以选择何时扩展您的 应用程序到完全加载的应用程序服务器。日子一去不复返了 当使用 EJB CMT 或 JTA 的唯一替代方法是编写代码时 与本地事务,例如那些在 JDBC 连接上的事务,并且面对 如果您需要该代码在全局范围内运行,则需要大量返工, 容器管理的事务。使用 Spring 框架,只有一些 您的配置文件中的 bean 定义,而不是您的 代码,需要改一下。

    【讨论】:

    • 很好的解释。谢谢!!
    猜你喜欢
    • 2014-09-08
    • 2016-10-30
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多