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、如果事务中存在异常,只要对异常进行捕获和处理,都为执行成功,否则都不会执行成功。
  • 相关阅读:
    PDA智能程序访问WebService,报告“未能建立与网络的连接”
    VS2008中开发智能设备程序的一些总结收藏
    Error: The INF file contains Unicode characters that could not be converted correctly
    在vs2008工程中制作cab包
    linux专题三之如何悄悄破解root密码(以redhat7.2x64为例)
    linux专题一之文件描述符、重定向、管道符、tee命令
    linux的计划
    如何安装RHEL7.2x64 即红帽7.2虚拟机?
    快速排序及查找第K个大的数。
    来来来,做道题,一起防老年痴呆
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/12058859.html
Copyright © 2011-2022 走看看