spring 事务隔离级别和传播行为_Spring事务的隔离级别

事务的隔离级别

事务隔离级别指的是一个事务对数据的修改与另一个并行的事务的隔离程度,当多个事务同时访问相同数据时,如果没有采取必要的隔离机制,就可能发生以下问题:

92d0640245d86266bde5fcae11243d8e.png

后期文章会首发于本专栏,欢迎关注,点赞

JAVA高级进阶​zhuanlan.zhihu.com
11c494c2de375d298b2b9d8fdc37b793.png

Spring支持的隔离级别

4a5e8db490a1466957ac0055b185fee8.png

55712de6e7bdc8f636cb97f65a221edd.png

再必须强调一遍,不是事务隔离级别设置得越高越好,事务隔离级别设置得越高,意味着势必要花手段去加锁用以保证事务的正确性,那么效率就要降低,因此实际开发中往往要在效率和并发正确性之间做一个取舍,一般情况下会设置为READ_COMMITED,此时避免了脏读,并发性也还不错,之后再通过一些别的手段去解决不可重复读和幻读的问题就好了。

Spring设置事务隔离级别

配置文件的方式

 <tx:advice id="advice" transaction-manager="transactionManager">
 	<tx:attributes>
 		<tx:method name="fun*" propagation="REQUIRED" isolation="DEFAULT"/>
 	</tx:attributes>
 </tx:advice>

注解的方式

@Transactional(isolation=Isolation.DEFAULT)
public void fun(){
	dao.add();
	dao.udpate();
}

总结

Spring建议的是使用DEFAULT,就是数据库本身的隔离级别,配置好数据库本身的隔离级别,无论在哪个框架中读写数据都不用操心了。而且万一Spring没有把这几种隔离级别实现的很完善,出了问题就麻烦了。

最后,分享一份进阶宝典《Java核心知识点整理.pdf》,覆盖了JVM、Dubbo、锁、高并发、反射、mybatis、Spring原理、微服务、Zookeeper、数据库、数据结构等等,获取请点击下方文档即可

Java高级架构学习资料分享+架构师成长之路​713dbae4.wiz03.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值