• 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的将来生长三趋势
    Firefox 3.0新版应战IE欣赏器 年夜战在即
    讲解SQL与Oracle外键束厄狭窄中的级联删除
    在Oracle中添加用户 赋权 修正暗码 解锁
    一个完好的Oracle rman备份规复参考示例
    Novell即将面临FSF起诉 终了其发行Linux
    Linux之x登录前后的转变
    Ubuntu Linux 8.04 Vsftp 虚构用户设置
    mysql修复坏表的步履办法
    用UTL_INADDR包获取曾经衔接用户的IP地址
  • 原文地址:https://www.cnblogs.com/Tiandaochouqin1/p/10467069.html
Copyright © 2020-2023  润新知