【问题标题】:Why are there different types of transaction manager?为什么有不同类型的事务管理器?
【发布时间】:2017-10-07 08:22:40
【问题描述】:

我对 Web 应用程序中不同类型的事务管理器感到困惑:

Spring 事务管理器 vs JPA 事务管理器 vs Hibernate 事务管理器 vs JTA 事务管理器 vs 数据库事务管理器

我对上述事务管理器进行了一些谷歌搜索,但仍不清楚。

例如:

Hibernate tx manager 使用Database tx manager

JPA tx manager 使用 Hibernate tx 经理

Spring tx manager 使用 JPA transaction managerJTA tx manager

编辑: 我的应用程序的配置示例如下: 样品

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

<prop key="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.JBossStandAloneJtaPlatform</prop>
                <prop key="transaction.auto_close_session">true</prop>
                <prop key="current_session_context_class">jta</prop>

所以如果我考虑上面的示例,JPA 事务管理器是否使用休眠事务管理器,而休眠管理器又使用 JTA 管理器,我正确吗?

这是否意味着每个事务管理器都使用底层事务管理器?

【问题讨论】:

  • 您的问题是什么?您可以简单地检查类型层次结构和实现。
  • 我想知道它们是如何相互关联的?是每个事务管理器都与底层管理器一起工作还是独立工作。
  • 所以你想知道每个事务管理器的实现细节。那你为什么不检查一下实现呢?
  • 不只是概念的实现,例如 Hibernate tx manager 使用 Database tx manager JPA tx manager 使用 Hibernate tx manager Spring tx manager 使用 JPA transaction manager 还是 JTA tx manager 我的理解是正确的

标签: hibernate jdbc transactions spring-transactions jta


【解决方案1】:

当您说“每个事务管理器都使用和底层事务管理器”时,您并不完全正确。

以Spring为例,事务策略由PlatformTransactionManager接口定义。它不依赖于诸如 JNDI 之类的查找策略。 PlatformTransactionManager 实现的定义与 Spring Framework IoC 容器中的任何其他对象(或 bean)一样。即使在使用 JTA 时,仅此一项优势就使 Spring Framework 事务成为有价值的抽象。事务代码比直接使用 JTA 更容易测试。

因此 Spring 在数据库事务管理方面提供了多种实现可能性。

【讨论】:

  • 但是我的应用程序中有一个配置让我感到困惑。我的应用程序 spring+jpa+hibernate,它的非常旧的项目。他们使用 JPA 作为事务管理器,并且在下面的 JPA hibernate 配置中的 JTA 中是
  • samaple org.hibernate.service。 jta.platform.internal.JBossStandAloneJtaPlatformtruejta
  • 所以如果我考虑上面的例子,JPA 事务管理器是否使用休眠事务管理器,而休眠管理器使用 JTA 管理器,我正确吗?
猜你喜欢
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 2015-02-25
  • 1970-01-01
相关资源
最近更新 更多