- 什么是事务属性
属性:描述物体特征的一系列值性别 身高 体重 ...事务属性:描述事务特征的一系列值
1. 隔离属性
2. 传播属性
3. 只读属性
4. 异常属性
- 如何添加事务属性
@Transactional(isolation=, propagation=, readOnly=, timeout=, rollbackFor=, noRollbackFor=,)
- 事务属性详解
(1)隔离属性(isolation)
- 隔离属性的概念
概念:描述了事务解决并发问题的特征
1. 什么是并发多个事务(用户)在同一时间,访问操作了相同的数据同一时间:0.000几秒 微小前 微小后
3. 并发会产生哪些问题1. 脏读2. 不可重复读3. 幻影读
4. 并发问题如何解决通过隔离属性解决,隔离属性中设置不同的值,解决并发处理过程中的问题
- 脏读
产生原因:一个事务,读取了另一个事务中没有提交的数据,会在本事务中产生数据不一致的问题
解决方案:@Transactional(isolation=Isolation.READ_COMMITTED)
- 不可重复读
产生原因:一个事务中,多次读取相同的数据,但是读取结果不一样,会在本事务中产生数据不一致的问题
注意:1. 不是脏读2. 是在一个事务中
解决方案:@Transactional(isolation=Isolation.REPEATABLE_READ)
本质:加了一把行锁
- 幻影读
产生原因:一个事务中,多次对整表进行查询统计,但是结果不一样,会在本事务中产生数据不一致的问题
解决方案:@Transactional(isolation=Isolation.SERIALIZABLE)
本质:加了一个表锁
- 总结
并发安全:SERIALIZABLE > REPEATABLE_READ > READ_COMMITTED
运行效率:READ_COMMITTED > REPEATABLE_READ > SERIALIZABLE
- 默认的隔离属性
- sd
- sd
- sd