java面试题Spring支持的常用事务传播属性和事务传播级别
事务的属性
1 propagation用来设置事务的传播行为
事务的传播行为:一个方法运行在了一个开启事务的方法中,当前方法是使用依附的方 法事务还是使用自身的事务
Propagation.REQUIRED默认值 使用其依附的别人方法的事务
Propagation.REQUIRES_NEW 将原来的事务挂起 开启一个新的事务(即执行自身的事务)
使用方法 在需要使用事务的方法上加注解 @Transactional 什么都不加默认为Propagation.REQUIRED
若想开启新事务执行自己的事务则可以在方法上加@Transactional(propagation=Propagation.REQUIRES_NEW)
2 isolation用来设置事务的隔离级别
Oracle支持的事务隔离级别为 (默认读已提交read committed 串行化 serializable
- Mysql支持所有的事务隔离级别 读未提交 read uncommitted
- 读已提交 read commited
- (默认)可重复读 repeatable read
- 串行化 serializable
同传播行为一样 也是在注解@Transaction()中添加 (isolation=Isolation.DEFAULT)
例 : 购买图书时Mysql数据库默认是可重复读事务隔离级别 则当数据库中书价格变的时候查出的价格仍然是变动之前的