spring5入门(十八):事务管理,传播行为、隔离级别
事务传播行为
- 事务方法
即是对数据库进行增、删、改操作的方法
-
传播属性
-
REQUIRED行为
如果add方法有事务,update方法没有事务,add方法调用update方法时,update方法使用add方法的事务
如果add方法没有事务,update方法有事务,add方法调用update方法时,add方法创建新的事务
- REQUIRED_NEW行为
add方法调用update方法时,不管add方法是否有事务,都会创建新的事务
- 配置传播行为
@Transactional(propagation = Propagation.REQUIRED)
隔离级别
- 简介
事务有特性成为隔离性,多事务操作之间不会产生影响
- 脏读
一个未提交事务读取到另一个未提交事务的数据
- 不可重复读
一个未提交事务读取到另一提交事务修改数据
- 虚(幻)读
一个未提交事务读取到另一提交事务添加数据
-
设置事务隔离级别解决读问题
-
设置隔离级别
@Transactional(isolation = Isolation.REPEATABLE_READ)
timeout:超时时间
事务需要在一定时间内进行提交,如果不提交进行回滚
默认值是 -1 ,设置时间以秒单位进行计算
@Transactional(timeout = -1)
readOnly:是否只读
读:查询操作,写:添加修改删除操作
readOnly 默认值 false,表示可以查询,可以添加修改删除操作
设置 readOnly 值是 true,设置成 true 之后,只能查询
@Transactional(readOnly = false)
rollbackFor:回滚
设置出现哪些异常进行事务回滚
noRollbackFor:不回滚
设置出现哪些异常不进行事务回滚