zoukankan      html  css  js  c++  java
  • 事务的七种传播行为(以代码为例,做个笔记)

    下面是我自己的一些代码例子:

    1.PROPAGATION_REQUIRED

     

    未加事务,两条数据正常插入.

    加上事务

     

     两个都回滚

     第一个正常插入,第二个回滚

     

     数据回滚了,再一次证明了,PROPAGATION_REQUIRED是事务合并成一个事务了

    2、2.Propagation.SUPPORTS

     

     若是PersonServiceImpl有事务,那么和PROPAGATION_REQUIRED没区别,若是没有事务,两个service,一个都不会回滚

    3.PROPAGATION_MANDATORY ,与Propagation.SUPPORTS的区别在于,一旦PersonServiceImpl没有事务,就会报错

     

     第一个正常插入,第二个回滚

     4.Propagation.REQUIRES_NEW

     

     两个都回滚了

     

     第一条回滚第二条成功插入。只有一个数据回滚,表明PersonServiceImpl的异常不会干扰到bankaccountservice2

    5.Propagation.NOT_SUPPORTED

     

     service1没有插入数据,而service2插入数据,表明,无论service2有没有事务,但是异常仍然会被service1捕捉到以至回滚

    6.PROPAGATION_NEVER

     


    与Propagation.NOT_SUPPORTED区别就在于,如果service1有事务,service2会抛异常

    7.PROPAGATION_NESTED

     
    会一起回滚

     
    也回滚了;

     和required区别在于,一旦service2try catch了异常,service1不会回滚,但是required无论你在哪发生异常,都会回滚,这就是我为什么说required行为下,都是一个事务的原因

  • 相关阅读:
    LA 6439 Pasti Pas! Hash
    HDU 1067 Gap BFS+Hash
    POJ 3474 Gold Balanced Lineup Hash
    ZOJ 3802 Easy 2048 Again 状压DP
    Hihocoder #1044 状态压缩·一
    HDU 2522 & AOJ 441 & AOJ 364 关于小数和分数的转换
    HDU 2549 Sumset Hash+枚举
    POJ 1840 Eqs Hash + 中途相遇法
    HDU 2128 Tempter of the Bone II BFS
    POJ 3686 & 拆点&KM
  • 原文地址:https://www.cnblogs.com/zouhong/p/13290766.html
Copyright © 2011-2022 走看看