- 什么是事务属性
属性:描述物体特征的一系列值
性别 身高 体重 ...
事务属性:描述事务特征的一系列值
1. 隔离属性
2. 传播属性
3. 只读属性
4. 异常属性
- 如何添加事务属性
@Transactional(isolation=, propagation=, readOnly=, timeout=, rollbackFor=, noRollbackFor=,)
- 事务属性详解
(1)隔离属性(isolation)文章来源地址https://www.toymoban.com/news/detail-737059.html
- 隔离属性的概念
概念:描述了事务解决并发问题的特征
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
文章来源:https://www.toymoban.com/news/detail-737059.html
到了这里,关于【孙哥说Spring5】第四章 Spring中的事务属性(Transaction Attribute)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!