https://developer.ibm.com/zh/articles/os-cn-spring-trans/

编程式事务:

项目中几乎不用,用声明式事务。
image.png

声明式事务:

image.png

传播机制:

https://blog.csdn.net/qq_26323323/article/details/81908955
所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递的,是重新创建事务还是使用父方法的事务?父方法的回滚对子方法的事务是否有影响?这些都是可以通过事务传播机制来决定的。
1、required:
如果当前有事务就加入该事务,如果没有,则创建一个新的事务。
2、supports
有事务就用,没有就不用。(别人用了我就用,别人没有自己就不用)
3、nested 嵌套
有事务,就直接在该事务的基础上创建一个嵌套事务,本质上还是同一个事务,做一次提交。没有事务就创建一个新的事务,单独提交。
4、mandatory 强制的,义务的,法定的
MANDATORY必须在已有事务下被调用,否则报错
5、never
NEVER必须在没有事务的方法中执行,否则报错;
6、not_supported
NOT_SUPPORTED相当于没有Spring事务,每条执行语句单独执行,单独提交
7、requires_new
REQUIRES_NEW为当前方法创建一个新的事务,并且当前事务先提交,然后再提交老的事务**
image.png