Bootstrap

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)