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、如果事务中存在异常,只要对异常进行捕获和处理,都为执行成功,否则都不会执行成功。
  • 相关阅读:
    bat 处理adb脚本
    作用域,高阶函数
    常用内置函数-6
    习题元祖与字典的值交换
    函数的参数
    序列类型与非序列类型
    格式化输出,深浅复制
    可变,不可变与 id 的关系
    linux-shell系列6-rundeck生成host文件
    linux-shell系列5-统计
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10972622.html
Copyright © 2011-2022 走看看