参考文章 https://www.cnblogs.com/jjzd/p/6541525.html
JDBC事物
JDBC事务由Connnection管理,也就是说,事务管理实际上是在JDBC Connection中实现。事务周期限于Connection的生命周期
ibatis框架来说,事务管理在SqlMapClient所依托的JDBC Connection中实现,因此事物周期限于SqlMapClient生命周期.
JTA事物
JTA容器实现,管理当前的多个Connection,能够实现垮库 ,使用JTA不支持自动提交
javax.transaction.UserTransaction
begin()
DataSource ds = obtainXADataSource();
Connection conn = ds.getConnection();
commit();
JTA方式的实现过程
XADataSource产生的XAConnection它扩展了一个getXAResource()方法 通过这个 getXAResource()方法加入到了事物管理器中 并且黑盒
Xid标识事物
formatID
gtrid 全局事务标识符
bqual 分支修饰词标识符
获取数据源
“两步提交协议”来提交一个事务分支
分布式事物部分提交
在“第 1 阶段”之后,您从 DB2 和 IDS 数据库中都收到了“okay”。在下一步中,应用程序成功提交了 DB2 的事务分支
在应用程序可以通知 IDS 事务分支提交它这一部分之前,IDS 引擎断电挂了
需要引入事物监听器的一个程序 ,来连接数据库引擎中,打开事物的分支, 然后通知数据库引擎提交或者回滚打开的事物