Java Spring全局事务与本地事务
在阅读Spring事务文档时,我发现它同时支持全局事务和本地事务Java Spring全局事务与本地事务,java,spring,transactions,spring-transactions,distributed-transactions,Java,Spring,Transactions,Spring Transactions,Distributed Transactions,在阅读Spring事务文档时,我发现它同时支持全局事务和本地事务 简单来说,什么是全局事务,什么是本地事务 一个比另一个有什么优势?它们的适当用途是什么 如果我使用以下配置,是否意味着它是本地事务 <tx:annotation-driven transaction-manager="transManager" /> <bean id="transManager" class="org.springframework.orm.jpa.JpaTransactionManage
- 简单来说,什么是全局事务,什么是本地事务
- 一个比另一个有什么优势?它们的适当用途是什么
<tx:annotation-driven transaction-manager="transManager" />
<bean id="transManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="emf" />
</bean>
我尝试在Google和Stackoverflow中搜索,但没有得到任何资源用简单的术语解释相同的问题。事实上,有很多资源可以回答您的前两个问题,例如,在第9.2章“动机”中解释了本地和全局事务,并描述了它们之间的差异。简言之: 全局事务是应用程序服务器管理的事务,允许使用不同的事务资源(这可能是两种不同的数据库、数据库和消息队列等) 本地事务是特定于资源的事务(例如),而应用服务器与它们无关。 (同一章很好地解释了它们各自的优缺点,比我能解释的要好得多,所以我建议你仔细看看)
回答你后面的问题。报告说,
JpaTransactionManager
能够处理全局事务,因此通过查看呈现的代码片段,很难判断它是本地事务还是全局事务。相同的文档说明应该使用本地单资源事务DataSourceTransactionManager
。全局事务与XA事务相同吗?我假设XA是全局事务。Serhiy提供的答案中有一个错误。在最后一段中,他指出了JtaTransactionManager的文档,同时提到了JpaTransactionManager。正确地说,JtaTransactionManager是全局的,而JpaTransactionManager不是。请更正答案,以免混淆未来读者。差不多了。JpaTransactionManager不是全局管理器,而是本地管理器。JtaTransactionManager是。