gpt4 book ai didi

hibernate - 为什么有不同类型的事务管理器?

转载 作者:行者123 更新时间:2023-12-02 04:35:23 26 4
gpt4 key购买 nike

我对 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

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

<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 管理器又使用 JTA 管理器,我说得对吗?

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

最佳答案

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

以Spring为例,事务策略由PlatformTransactionManager接口(interface)定义。它与 JNDI 等查找策略无关。 PlatformTransactionManager 实现的定义与 Spring Framework IoC 容器中的任何其他对象(或 bean)一样。即使在使用 JTA 时,仅此一个好处就使 Spring Framework 事务成为一个有值(value)的抽象。事务代码比直接使用 JTA 更容易测试。

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

关于hibernate - 为什么有不同类型的事务管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43862775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com