事务
概念:一组操作集合,是一个不可分割的单位,这些操作要么同时成功,要么同时失败
事务操作
- 开启事务(一组操作开始前,开启事务):start transaction / begin;
- 提交事务(操作全部成功后,执行提交):commit;
- 回滚事务(中间任何一个操作出现异常,回滚事务):rollbck
事务角色
事务管理员:发起事务方,通常是指在业务层接口开启事务,@TransActional
事务协调员:加入事务方,被发起事务方控制,多个事务加入后,再由事务管理员统一为一个事务,在spring中常指数据层方法,也可以是业务层方法
@TransActional
1.该注解用于事务管理
2.放在service层的方法/类/接口上
3.将当前的方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常回滚事务
4.默认情况下,只有RuntimeException异常才会回滚
5.rollkackFor属性可控制任何类型的异常进行回滚,@TransActional(rollbackFor=Exeception.class)
需要在配置文件中设置事务的开关
logging:
level:
org.springframework.jdbc.support.JdbcTransactionManager:debug
事务的传播行为
- 概念:当事务A中调用了事务B的时候,事务方法应该如何控制
- 可以通过@Transactional(propagation=)进行控制
- 常见的事务属性值
4.事务的传播
使用步骤
1.在业务层的接口上添加@Transactional
2.设置事务管理器
3.开启注解事务驱动
设置错误回滚
默认情况,仅*error,runtime运行时的错误会回滚
@Transactional(rollbackFor={ IOException.class(错误类型)})