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条)