事务的属性:
1 *propagation:用来设置事务的传播行为 事务的传播行为:一个方法运行在另一个开启了事务的方法中时,当前方法是使用原来的事务还是开启另一个新事务
--Propagation.REQUIRED 默认的 使用原来的事务
---Propagation.REQUIRES_NEW 将原来的事务挂起,开启一个新事务
2 *isolation: 用来设置事务的隔离级别
Isolation.REPEATABLE_READ: MYSQL的默认隔离级别 可重复读。
solation.READ_COMMITTED: ORACLE默认隔离级别,
开发时通常使用的隔离级别
方法上标注:@Transactional(propagation=Propagation.REQUIRES_NEW)
事务的隔离级别
1 数据库事务并发问题: 脏读(读了别人更新后回归之前的值) 不可重复读(都别人更新前和更新后的值,前后不一致) 幻读(读别人插入之前之后的部分数据(针对表,不针对字段))
2 事务的隔离级别:一个事务跟其他事务的隔离程度。隔离程度越高,数据一致性越好,并发程度越弱。 读未提交READ_UNCOMMITTED 不可避免 读已提交READ_COMMITTED 避脏读 不能避免不可重复度 可重复读REPEATABLE_READ(事务执行期间禁止其他事务对该字段进行更新) 避免脏读 不可重复读 串行化SERIALIZABLE(执行期间禁止其他事务对该表进行添加 、更新、删除操作。)
避免任何并发问题 方法上标注:@Transactional(propagation=Propagation.REQUIRES_NEW,isolation=Isolation.DEFAULT)