创建事务信息流程图
处理提交流程图
处理回滚流程图
外部方法回滚处理
前面说了,内部异常后,事务没做什么,只是设置了全局回滚的标记,处理完之后异常还会继续往上抛:
然后来看外部的事务怎么处理,先看外部事务状态,此时可见连接持有器的回滚标记已经被内部事务改成true
了,因为外部事务创建的时候是一个新事务,所以就可以执行doRollback
,内部就是JDBC
连接的回滚:
清除处理
回滚完了之后到了清除方法中,这两个方法是满足条件可以执行的:
一个就是把线程私有变量的属性全部清除了:
另一个进行数据源和连接资源的解绑,因为马上就要释放连接资源了,然后把连接的属性设置回来,比如自动提交,隔离级别,只读设置等:
解绑会把数据清干净,不会产生内存泄露:
最后还有连接的释放,只有创建他的那个事务才可以释放:
连接持有器会清空回滚标记:
好了,两个REQUIRED
出异常的情况分析过了,其实就是内部只是会标记一下,最后还是外部存在的那个事务去回滚。下次我们分析REQUIRED
和REQUIRES_NEW
,还是以事务状态来讲比较好理解。
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。
Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。
它的内容包括:
- 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
- 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
- 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
- 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
- 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
- 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
- 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
- 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw
目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:
想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询
同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。