zoukankan      html  css  js  c++  java
  • Java事务以及嵌套事务

    知识点:java事务属性

    复制代码
    Propagation取值:
    
      REQUIRED(默认值):在有transaction状态下执行;如当前没有transaction,则创建新的transaction;
    
      SUPPORTS:如当前有transaction,则在transaction状态下执行;如果当前没有transaction,在无transaction状态下执行;
    
      MANDATORY:必须在有transaction状态下执行,如果当前没有transaction,则抛出异常IllegalTransactionStateException;
    
      REQUIRES_NEW:创建新的transaction并执行;如果当前已有transaction,则将当前transaction挂起;
    
      NOT_SUPPORTED:在无transaction状态下执行;如果当前已有transaction,则将当前transaction挂起;
    
      NEVER:在无transaction状态下执行;如果当前已有transaction,则抛出异常IllegalTransactionStateException。
    复制代码

    1、场景--->并行事务:

    并行事务:
    A:方法事务为默认的REQUIRED
    B:方法事务为 REQUIRES_NEW 或者 REQUIRED

      

      执行结果:

      

      结论:并行事务不存在事务影响

    2、场景--->嵌套相同事务:

      a) 事务嵌套,在同一个事务中,没有对异常进行处理

      

      执行结果:两个都没有插入成功

       

      结论:由于两个都是在一个事务当中,所以只要有一个方法事务有问题,那么都不会插入成功。

      b) 事务嵌套,在同一个事务中,对异常进行处理

      

      执行结果:两个都插入成功。

      

      结论:如果事务存在异常,并进行捕获处理,不会影响事务。

     3、场景--->嵌套不同事务:

      a)事务嵌套,在不同事务中,没有对异常进行处理

      

      执行结果:都没有插入成功。

      

      结论:不同事务中,嵌套的事务,没有对异常进行处理,都不会执行成功。

      b)事务嵌套,在不同事务中,对异常进行处理

       

       执行结果:都插入成功。

       

      结论:不同事务,只要对异常进行捕获并处理,都会执行成功

    大结论:

    1、在Java事务中,事务的嵌套,如果有事务成功,那么则都成功,否则都不会成功。
    2、如果事务中存在异常,只要对异常进行捕获和处理,都为执行成功,否则都不会执行成功。
  • 相关阅读:
    [zjoi]青蛙的约会_扩展欧几里德
    [coci2012]覆盖字符串 AC自动机
    出题日志
    [zjoi2003]密码机
    矩阵乘法
    洛谷 P1064 金明的预算方案
    洛谷 P1656 炸铁路
    洛谷 P1049 装箱问题
    最长上升子序列(LIS)与最长公共子序列(LCS)
    求最大公约数与最小公倍数
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/12058859.html
Copyright © 2011-2022 走看看