SpringBoot2.x-7种事务的传播性
- 概述
- 1.REQUIRED(必须存在)
- 2.REQUIRED_NEW(存在就挂起并新建)(多个事务分开提交,分开回滚)
- 3.SUPPORTS(正常运行)
- 4.NOT_SUPPORTS(挂起运行)
- 5.MANDATORY(必须被事务调用)
- 6.NEVER(禁止)
- 7.NESTED (嵌套)(嵌套事务一起提交,一起回滚)
概述
默认值:Propagation.REQUIRED
1.Propagation.REQUIRED(必须存在)
2.Propagation.REQUIRED_NEW(存在就挂起并新建)(多个事务分开提交,分开回滚)
3.Propagation.SUPPORTS(正常运行)
4.Propagation.NOT_SUPPORTS(挂起运行)
5.Propagation.MANDATORY(必须被事务调用)
6.Propagation.NEVER(禁止)
7.Propagation.NESTED(嵌套)(嵌套事务一起提交,一起回滚)
1.REQUIRED(必须存在)
进入方法时判断:
1.当前存在事务,就加入当前事务。
2.当前不存在事务,就新建事务。
2.REQUIRED_NEW(存在就挂起并新建)(多个事务分开提交,分开回滚)
进入方法时判断:
1.当前存在事务,就挂起当前事务,然后新建事务。
2.当前不存在事务,就新建事务。
3.SUPPORTS(正常运行)
进入方法时判断:
1.当前存在事务,就加入事务。
2.当前不存在事务,就不使用事务。
4.NOT_SUPPORTS(挂起运行)
进入方法时判断:
1.当前存在事务,就挂起事务。
2.当前不存在事务,就不使用事务。
5.MANDATORY(必须被事务调用)
进入方法时判断:
1.调用者是否存在事务,不存在就抛出 “不存在事务异常”
6.NEVER(禁止)
进入方法时判断:
1.存在事务就抛出 “非法状态异常”
7.NESTED (嵌套)(嵌套事务一起提交,一起回滚)
类比 REQUIRED_NEW
不一样的是
声明为REQUIRED_NEW,是多个事务,独立提交回滚,存在多个方法,部分提交,部分回滚。
声明为NESTED (嵌套),是多个事务,一起提交回滚,不存在多个方法,部分提交,部分回滚。
❀❀❀❀❀❀❀❀❀❀❀❀