一,简介
事务作用∶在数据层保障一系列的数据库操作同成功同失败
Spring事务作用︰在数据层或业务层保障一系列的数据库操作同成功同失败
二,流程
1、在业务层接口里使用@Transactional注解开启事务
2、在配置类中指定一个事务管理器(PlatformTransaction、DataSourceTransaction等)
3、开启注解式事务驱动,在配置类(配置JDBC的那个)中加入@EnableTransactionManagement注解使事务管理注解生效
三,Spring事务角色
事务管理员:发起事务方,在Spring中通常指的是业务层中开启事务的方法
事务协调员:加入事务方,在Spring中通常指数据层方法,也可以是业务层方法
Spring事务属性(@Transactional的一些属性)
属性 | 描述 |
readonly | 设置是否为只读事务 |
timeout | 设置事务超时时间(timeout =1(永不超时)) |
rollbackFor | 设置事务回滚异常(class) |
noRollbackFor | 设置事务不回滚异常(class) |
noRollbackForClassName | 设置事务不回滚异常(string) |
propagation | 设置事务传播行为 |
并非所有的异常都会自动回滚,如果出现的异常不是error或者运行时异常它是不会回滚的,所以才需要roollbackFor
四,事务传播行为
配置propagation属性的值来设置事务传播行为,它是用来设置协调员对管理员的事务的态度(加入或者新建)
值 | 管理员 | 协调员 |
REQUIRED(默认) | 开启T | 加入T |
无 | 新建 | |
REQUIRES_NEW | 开启T | 新建 |
无 | 新建 | |
SUPPORTS | 开启T | 加入T |
无 | 无 | |
NOT_SUPPORTED | 开启T | 无 |
无 | 无 | |
MANDATORY | 开启T | 加入T |
无 | error | |
NEVER | 开启T | error |
无 | 无 | |
NESTED | 设置savepoint,一旦事务回滚,事务将回滚到savePoint处,交由客户响应提交/回滚 |