Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring全局事务与本地事务_Java_Spring_Transactions_Spring Transactions_Distributed Transactions - Fatal编程技术网

Java 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

在阅读Spring事务文档时,我发现它同时支持全局事务和本地事务

  • 简单来说,什么是全局事务,什么是本地事务
  • 一个比另一个有什么优势?它们的适当用途是什么
如果我使用以下配置,是否意味着它是本地事务

<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是。