事务问题
来源:4-3 开发新增图书控制器
慕的地5481427
2022-06-14 17:36:18
为什么这里基本都是Exception.class呢。没有用过
Propagation.REQUIRED Propagation.SUPPORTS Propagation.MANDATORY Propagation.REQUIRES_NEW
这几个呢,尤其是REQUIRES_NEW,这个不是可以做到事务互不影响么
1回答
好帮手慕小尤
2022-06-14
同学你好,1、@Transactional(rollbackFor=Exception.class)表示如果类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。
2、@Transactional注解默认使用 Propagation.REQUIRED果不存在则创建一个新事务。具体使用哪个,同学结合项目需求与他们的作用选择使用即可。
1)默认使用 Propagation.REQUIRED:支持当前事务,如果不存在则创建一个新事务;(支持当前事务即调用当前方法的地方声明的事务)
2)Propagation.SUPPORTS:支持当前事务,如果不存在则非事务执行
3)Propagation.MANDATORY:支持当前事务,如果不存在则抛出异常
4)Propagation.REQUIRES_NEW:创建一个新事务,如果当前已存在事务则挂起该事务,使用新建的事务
5)Propagation.NOT_SUPPORTED:非事务执行,如果当前已存在事务则暂停该事务
6)Propagation.NEVER:非事务执行,如果当前已存在事务则抛出异常
7)Propagation.NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
祝学习愉快!