全局事务与本地事务的区别

全局事务与本地事务的区别


2024年3月15日发(作者:)

全局事务:资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器

一般使用 XA 二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。

本地事务:在单个 EIS 或数据库的本地并且限制在单个进程内的事务。本地事务不涉

及多个数据来源。

在Hibernate配置文件中有这么两种配置方式:

1.如果使用的是本地事务(jdbc事务)

name="t_session_context_class">thread,这个是我们

常用的选项,只针对一个数据库进行操作,也就是说只针对一个事务性资源进行操作.

2. 如果使用的是全局事务(jta事务)

name="t_session_context_class">jta

以前我们学习的事务类型都属于本地事务。 JTA(全局事务)和thread(本地事务)有什

么区别呢?在某些应用场合,只能使用全局事务,比如:

有两个数据库:

现在有个业务需求--转账

step 1> update mysql_table set amount=amount-xx where id=aaa 发生扣钱,

假设是在mysql数据库扣钱的。

step 2> update oracle_table set amount=amount+xx where id=bbb 加钱,假设

是在oracle数据库扣钱的。

现在怎么确保两个语句在同一个事务里执行呢?

以前在JDBC里是这样做

connection = mysql 连接mysql

oCommit(false); 不自动提交

1> update mysql_table set amount=amount-xx where id=aaa 发生扣钱,假设是

在mysql数据库扣钱的。

2> update oracle_table set amount=amount+xx where id=bbb 发生在oracle

数据库

();

执行这两条语句,然后通过connection对象提交事务.我们这样子做只能确保这两个

语句在同一个数据库mysql里面实现在同一个事务里执行。 但是问题是我们现在是要连

接到oracle数据库,是不是需要connection2啊?


发布者:admin,转转请注明出处:http://www.yc00.com/news/1710510942a1769472.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信