spring事务的传播机制与事务挂起

事务的传播机制:(不是JDBC事务管理)用来解决业务层的事务之间调用的问题。
          PROPAGATION_REQUIRED     :支持(使用)当前事务,如果不存在事务就创建一个新事务

                 *方法A中调用方法B:  如果方法A有事务,B方法就使用方法A的事务。如果A没有事务,就创建一个新事务。(A,B在同一个事务中)

          PROPAGATION_SUPPORTS    :支持(使用)当前事务,如果不存在事务就不使用事务

          PROPAGATION_MANDATORY     :支持(使用)当前事务,如果不存在就抛出异常

          PROPAGATION_REQUIRES_NEW     :如果有事务存在,则挂起当前事务,创建一个新事务。(不在同一事务)

          PROPAGATION_NOT_SUPPORTED     :已非事务的方式运行,如果有事务存在,则挂起当前事务。

          PROPAGATION_NEVER     :已非事务的方式运行,如果有事务存在,则抛出异常。

          PROPAGATION_NESTED     : 如果当前事务存在,则嵌套事务执行

                         *基于savePoint(保存点)技术

                         *方法A.B: A有事务,A执行之后,将A事务执行之后的内容保存到savePoint,如果B事务出现异常的话,用户需要自己设置提交事务还是回滚。

      常用的:

                PROPAGATION_REQUIRED 

                PROPAGATION_REQUIRES_NEW

                PROPAGATION_NESTED

·关于事务挂起的举例:(某事务挂起之后,任何操作都不在该事务的控制之下)
例如: 方法A支持事务,方法B不支持事务。    即PROPAGATION_NOT_SUPPORTED

方法A调用方法B。
在方法A开始运行时,系统为它建立Transaction,方法A中对于数据库的处理操作,会在该Transaction的控制之下。
这时,方法A调用方法B,方法A打开的 Transaction将挂起,方法B中任何数据库操作,都不在该Transaction的管理之下。
当方法B返回,方法A继续运行,之前的Transaction回复,后面的数据库操作继续在该Transaction的控制之下 提交或回滚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值