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行为下,都是一个事务的原因

  • 相关阅读:
    线程数究竟设多少合理
    Elasticsearch 技术分析(八):剖析 Elasticsearch 的索引原理
    作为程序员你是如何学习的?
    系统运行缓慢,CPU 100%,以及Full GC次数过多问题的排查思路
    kms相关文档
    删除所有docker容器镜像
    ubuntu mysql5.7安装
    GORM自定义日志配置
    SQL清空全部表数据
    Nginx 证书
  • 原文地址:https://www.cnblogs.com/zouhong/p/13290766.html
Copyright © 2011-2022 走看看