写点什么

spring 的事务隔离级别是何许人也

作者:卢卡多多
  • 2021 年 11 月 21 日
  • 本文字数:766 字

    阅读完需:约 3 分钟

spring的事务隔离级别是何许人也

spring 事务隔离级别:

spring 存在五种隔离级别:这五种隔离级别通常是来源于 MySQL 的事务的隔离级别,可以相应的解决事务提交过程中的,数据安全的问题,比如读未提交,不可重复读取,脏读,幻读的问题,其中脏读(读未提交);


  • 1.ISOLATION_DEFAULT 隔离级别


默认的事务隔离级别,spring 中接口 PlatfromTransactionManager 默认的事务,会直接使用默认的数据库的事务隔离级别


  • 2.ISOLATION_READ_UNCOMMITTED 隔离级别


读未提交,产生脏读,不可重复读,幻读的问题


  • 3.ISOLATION_COMMITTED 隔离级别


读已提交,可以解决脏读的问题;-->不可重复读,幻读的问题


  • 4.ISOLATION_REPEATABLE_READ 隔离级别


可重复读取,解决不可重复读的问题-->幻读的问题


  • 5.ISOLATION_SERIALIZABLE 隔离级别


解决幻读的问题,相当于 MySQL 的串行化的问题


这些都是比较基本的是隔离级别;

spring 事务传播机制;

spring 事务传播机制主要有 7 种类型,



spring 事务的传播机制类型,org.springframework.transaction.annotaion.Propagation 枚举类


如果说想加入一个方法中,加入我需要的一个事务,比如是下订单的额操作,我给这个类中,添加订单的方法,持续的加入一个事务,用于管理整个下订单的过程,其中有订单的添加,库存下发,分单派件,


枚举类中 Propagation 和 @Transactional 注解使用,枚举类中定义的事务传播行为类型与 spring 的三大接口中定义的是传播类型 相对应。


但是我们用使用搞得还是 spring 默认使用的 Propagation 类,其中有上述的七个对应的 spring 的事务传播机制;


REQUIRED 事务的传播类型举个例子;


当前这个 spring 我事务传播类型,齐国是当前没有事务,就创建一个事务,已经存在一个事务,就加入这个事务, 如果说这个事务发生异常,调用端都回滚,


代码展示:


REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED)
复制代码


添加到某一方法上就是


@Transactional(propagation=propagation.REQUIRED)
复制代码


发布于: 2 小时前阅读数: 6
用户头像

卢卡多多

关注

努力寻找生活答案的旅途者 2020.04.12 加入

公众号:卢卡多多,欢迎一起交流学习

评论

发布
暂无评论
spring的事务隔离级别是何许人也