【发布时间】: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 manager 或 JTA 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