spring:事务的4大隔离级别,7大传播行为

Posted 谁为含愁独不见,更教明月照流黄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring:事务的4大隔离级别,7大传播行为相关的知识,希望对你有一定的参考价值。

一、五大隔离级别

  ISOLATION_READ_UNCOMMITTED:读未提交

  ISOLATION_READ_COMMITTED:读已提交

  ISOLATION_REPEATABLE_READ:可重复读

  ISOLATION_SERIALIZABLE:串行化

  ISOLATION_DEFAULT:默认的隔离级别(不解释)

脏读:A事务读取B事务尚未提交的更改数据,并在这个数据的基础上进行操作,这时候如果事务B回滚,那么A事务读到的数据是不被承认的

幻读:A事务读取B事务提交的新增数据,会引发幻读问题。幻读一般发生在计算统计数据的事务中,例如银行系统在同一个事务中两次统计存款账户的总金额,在两次统计中,刚好新增了一个存款账户,存入了100,这                     时候两次统计的总金额不一致。

不可重复读:不可重复读是指A事务读取了B事务已经提交的更改数据。假如A在取款事务的过程中,B往该账户转账100,A两次读取的余额发生不一致。

以上者三中情况如果和钱打上交易的话,那么就十分的恐怖了,可以幻想一下。

二、事物的其中传播行为

required:表示当前事务必须在一个有事务的上下文中运行,如果客户端有事务在运行,那么被调用端将在该事务中运行,否在重新开启一个事务(如果被调用端发生异常,那么,都将事务回滚。)

required_new:标识当前方法必须运行在它自己的事务中,一个新的事务启动,而且如果有一个现有的事务在运行的话,则这个事务将在运行期被挂起直到这个事务被提交或者回滚才执行

supports:表示当前方法不必须需要一个具有事物的额上下文,但是如果有的话,它也可以在这个事务中运行

not_supports:表示当前方法不应该在一个事务中运行,如果有的话,将被挂起,直到事务提交或者回滚才执行

mandatory:表示当前方法必须在一个事务中运行,没有的话将抛出异常

nested:表示当前方法正有一个事务在运行中,则该方法应该运行在一个嵌套事务中,被嵌套的事务应该独立于被封装的事务中进行提交或者回滚。如果分装事务存在,并且外层事务抛出异常回滚,那么内层事务必须回       滚,反之层事务不影响外层事务。如果封装事务不存在,则与required是一样的

never:表示该方法不应该运行在一个事务中,如果有,则抛出异常

 

四种隔离级别个七大传播行为看情况使用!!!!!!!!!!!!!  

 

以上是关于spring:事务的4大隔离级别,7大传播行为的主要内容,如果未能解决你的问题,请参考以下文章

spring的4种事务特性,5种隔离级别,7种传播行为

Spring的4种事务特性,5种隔离级别,7种传播行为

spring的4种事务特性,5种隔离级别,7种传播行为

浅析Spring事务传播行为和隔离级别

Spring 有几种事务隔离级别?

理解 spring 事务传播行为与数据隔离级别