【MySQL数据库】查看MySQL数据库之中的默认隔离级别
SHOW VARIABLES LIKE 'transaction_isolation';
举个栗子,来看看隔离级别的作用吧
修改testInsertIsolation测试类
definition.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);// 设置事务隔离级别为:读已提交
执行结果:
因为我们线程B在修改后,就提交了 , 而我们设置的隔离级别是读已提交,所以能读到已提交的数据
事务线程-A【查询结果】:Book(bid=1, title=Java入门到入土, author=李老师, price=99.9)事务线程-B 执行结果:1事务线程-A【查询结果】:Book(bid=1, title=Netty, author=李老师, price=99.9)
5、Spring事务传播机制事务开发是和业务层有直接联系的,在进行开发的过程之中,很难出现业务层之间不互相调用的场景,例如:存在有一个A业务处理,但是A业务在处理的时候有可能会调用B业务,那么如果此时A和B之间各自都存在有事务的机制,那么这个时候就需要进行事务有效的传播管理 。
文章插图
文章插图
1、TransactionDefinition.PROPAGATION_REQUIRED:默认事务隔离级别,子业务直接支持当前父级事务 , 如果当前父业务之中没有事务 , 则创建一个新的事务,如果当前父业务之中存在有事务,则合并为一个完整的事务 。简化的理解:不管任何的时候,只要进行了业务的调用,都需要创建出一个新的事务,这种机制是最为常用的事务传播机制的配置 。
2、TransactionDefinition.PROPAGATION_SUPPORTS:如果当前父业务存事务,则加入该父级事务 。如果当前不存在有父级事务,则以非事务方式运行;
3、TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务的方式运行,如果当前存在有父级事务,则先自动挂起父级事务后运行;
4、TransactionDefinition.PROPAGATION_MANDATORY:如果当前存在父级事务,则运行在父级事务之中,如果当前无事务则抛出异常(必须存在有父级事务);
5、TransactionDefinition.PROPAGATION_REQUIRES_NEW:建立一个新的子业务事务,如果存在有父级事务则会自动将其挂起,该操作可以实现子事务的独立提交,不受调用者的事务影响,即便父级事务异常,也可以正常提交;
6、TransactionDefinition.PROPAGATION_NEVER:以非事务的方式运行,如果当前存在有事务则抛出异常;
7、TransactionDefinition.PROPAGATION_NESTED:如果当前存在父级事务,则当前子业务中的事务会自动成为该父级事务中的一个子事务,只有在父级事务提交后才会提交子事务 。如果子事务产生异常则可以交由父级调用进行异常处理,如果父级事务产生异常,则其也会回滚 。
推荐阅读
- 空调漏氟的原因有哪些 五招轻松搞定空调漏氟问题
- 蚂蚁花呗怎么还款 三步就可以搞定
- 千元换屏100块搞定 苹果xr换外屏玻璃多少钱
- 怎样鉴别真假蜂蜜,几个方法搞定 怎样鉴别真假蜂蜜
- 醉驾找什么关系可搞定 醉驾找关系的最佳时间是什么时候
- 怎么样换备胎视频教程 如何换备胎教你这九步轻松搞定
- 六点识别真假驾照 驾驶证怎么辨别真假?6个窍门,3秒搞定!
- 科三靠边停车30公分操作技巧,四步搞定 科目三靠边停车30公分一把过技巧
- 科目三靠边停车30cm技巧,简单5步就搞定 科目三靠边停车30cm技巧
- 酒驾找什么关系可搞定 驾驶员酒驾找关系可以摆平