使用ThreadLocal实现Java嵌套事务

  • 时间:
  • 浏览:1
  • 来源:uu快3下载网址_uu快3IOS下载_电脑版

回滚当前的事务,随后关闭连接,并将其从栈中移除。

原文链接: javacodegeeks

上端的TransactionManagerStackImpl类为单tcp连接创建了嵌套事务。

测试上端的辦法 ,提交内层事务,回滚外层事务。

提交当前的事务,随后关闭连接,并将其从栈中移除:

新建如下事务管理类:

理解嵌套事务

测试

新建如下接口:

这里初始化TransactionManagerStackImpl,在tcp连接中创建嵌套的事务。

亲戚亲戚亲们儿使用ThreadLocal管理栈的连接。

事务是都可以 嵌套的。可是内层事务或外层事务都可以 在不影响或多或少事务的条件下进行回滚或提交。

使用简单的POJO实现

多tcp连接的嵌套事务

getConnection()获得当前事务的连接。可能性连接为空,则创建新的连接并将其加入到栈:

事务遵循栈“先进后出”的原则,通过栈存储事务的连接:

beginTransaction()用于开启1个多新的事务,并将连接加入到栈中。自动提交设置为否:

到这里,亲戚亲戚亲们儿创建了1个多栈(Stack)

在多tcp连接的应用中,每个tcp连接都是其独立的事务和嵌套事务。

结果

新建的事务嵌套在外层事务中。可能性内层事务完成(不论是回滚或是提交),外层的事务就都可以 进行回滚或提交,原先的操作暂且会影响内层事务。首先关闭最内层的事务,并逐步移动到外层事务。

大多嵌套事务都是通过EJB实现的,现在亲戚亲戚亲们儿尝试实现对POJO的嵌套事务。这里亲戚亲戚亲们儿使用了ThreadLocal的功能。

内层事务回滚,外层事务提交的情形: