我对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
编辑: 我的应用程序的配置示例如下: samaple
<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事务管理器使用hibernate事务管理器而反过来hibernate manger使用JTA管理器我是否正确?
这是否意味着每个事务管理器都使用基础事务管理器?
答案 0 :(得分:0)
当您说“每个事务管理器使用和基础事务管理器”时,您并不完全正确。
以Spring为例,事务策略由PlatformTransactionManager
接口定义。它与诸如JNDI之类的查找策略无关。 PlatformTransactionManager
实现的定义与Spring Framework IoC容器中的任何其他对象(或bean)相同。仅使用此优势,即使您使用JTA,Spring Framework事务也是值得抽象的。与直接使用JTA相比,交易代码的测试更容易。
因此,Spring提供了有关数据库事务管理的多种实现可能性。