创建事务信息流程图
处理提交流程图
处理回滚流程图
外层是REQUIRED有异常捕获内层是NESTED
事务状态
外层:
内层用外层的连接,而且不是新事务,不是新同步:
异常回滚
内层直接进保存点回滚:
会重置连接持有器的回滚标记:
外层因为有异常捕获,而且连接持有器的回滚标记是false
,所以成功提交。
外层是REQUIRED有异常内层是NESTED
结果是全回滚,因为内层成功了提交就把保存点上方了,其他什么都不做,然后外层遇到异常就直接回滚了。
所以这里就是一个好的例子,如果内层业务出了异常,外层捕获后就不会影响外层。比如前面说过的插入数据在外层,内层是打日志,就算打日志出现异常,也只是影响日志,外部的数据插入还是可以的,反过来如果日志没问题,但是外面数据插入出异常,整个都回滚,可以符合我们的一些业务。
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。