• 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、如果事务中存在异常,只要对异常进行捕获和处理,都为执行成功,否则都不会执行成功。
  • 相关阅读:
    周末给女友讲了遍加密算法,没想到...
    gradle执行打包并导出Apk到指定文件夹
    功能算法
    位运算之异或运算
    禁止ViewPager滑动
    macOS 去掉系统软件更新红点提示
    【转】Kotlin的inline内联函数
    Android Gradle Plugin v3.6.0/3.6.1 构建Bug
    IntelliJ IDEA UML插件
    【LeetCode 1. Two Sum】
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10972622.html
Copyright © 2020-2023  润新知