• spring:事务的5大隔离级别,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:表示该方法不应该运行在一个事务中,如果有,则抛出异常

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

  • 相关阅读:
    linux下使用yum安装mysql、tomcat、httpd
    C++中 模板Template的使用
    Linux如何在虚拟机中挂载iso yum源
    实例讲解Nginx下的rewrite规则
    WorldWind源码剖析系列:图像助手类ImageHelper
    WorldWind源码剖析系列:缓冲类Cache
    WorldWind源码剖析系列:绘制参数类DrawArgs
    WorldWind源码剖析系列:设置类SettingsBase
    WorldWind源码剖析系列:经纬度格网类LatLongGrid
    WorldWind源码剖析系列:相机类CameraBase
  • 原文地址:https://www.cnblogs.com/Tiandaochouqin1/p/10467069.html
Copyright © 2020-2023  润新知