【孙哥说Spring5】第四章 Spring中的事务属性(Transaction Attribute)

  1. 什么是事务属性
属性:描述物体特征的一系列值
	性别	身高	体重	...

事务属性:描述事务特征的一系列值
1. 隔离属性
2. 传播属性
3. 只读属性
4. 异常属性
  1. 如何添加事务属性
@Transactional(isolation=, propagation=, readOnly=, timeout=, rollbackFor=, noRollbackFor=,)
  1. 事务属性详解

(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 
  • 默认的隔离属性
  1. sd
  2. sd
  3. sd
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值