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)