栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring事务传播行为REQUIRES

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring事务传播行为REQUIRES

1. Spring事务传播行为propagation:

 Spring事务还有7种传播行为(propagation),是为了业务层之间调用事务关系而提出的,数据库层面并存在事务传播行为

  • REQUIRED:默认传播行为,当前有事务,就加入;没有事务就新建一个
  • SUPPORTS:当前有事务,就加入;没有事务就按非事务来调用
  • MANDATORY:当前有事务,就加入;没有事务就抛异常
  • REQUIRES_NEW:无论当前有没有事务,都会新建事务
  • NOT_SUPPORTED:如果当前有事务,事务挂起, 以非事务来执行;当前无事务,也以非事务来执行
  • NEVER:以非事务来执行,如果当前有事务,抛异常
  • NESTED:嵌套事务执行,如果没有事务就按REQUIRED来执行,也就是新建一个事务
2. 举个栗子:

比如常见的主方法不回滚而子方法异常回滚,就是通过传播行为控制的

 注意点:

  • 当子方法传播行为是NESTED时,虽然子方法没有异常,但是主方法异常了,就导致子方法和主方法都回滚,因为子方法嵌套用的主方法的事务
  • 当子方法传播行为是REQUIRED_NEW时,子方法会新建事务,子方法异常就回滚,而主方法catch了异常,所以不会触发主方法事务回滚
  • 主方法要catch异常,避免子方法异常而影响主方法事务回滚,主方法要想回滚就得再抛出运行时异常
  • 子方法不能是自调用,也就是不能在同一个类,和代理有关
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016456.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号