1、事务场景中,抛出异常被catch后,如果需要回滚,一定要手动回滚

其实像第一种try catch这种把整个包裹起来,这种业务方法也就等于脱离了spring事务的管理,因为没有任何异常会从业务方法中抛出,全被捕获并“吞掉”,导致spring异常抛出触发事务回滚策略失效。

@Transactional(readOnly = false)public void delete(Comment entity, Boolean isRe) {DefaultTransactionDefinition def = new DefaultTransactionDefinition();// explicitly setting the transaction name is something that can only be done programmaticallydef.setName("SomeTxName");def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);TransactionStatus status = transactionManager.getTransaction(def);try {super.delete(entity);} catch (Exception ex) {// 事务场景中,抛出异常被catch后,如果需要回滚,一定要手动回滚 inspectiontransactionManager.rollback(status);throw ex;}}

  2、事务传播行为:

int PROPAGATION_REQUIRED = 0;// 必需的--如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。int PROPAGATION_SUPPORTS = 1;// 支持当前事务,如果当前没有事务,就以非事务方式执行。int PROPAGATION_MANDATORY = 2;// 强制的、命令的--使用当前的事务,如果当前没有事务,就抛出异常。int PROPAGATION_REQUIRES_NEW = 3;// 新建事务,如果当前存在事务,把当前事务挂起。int PROPAGATION_NOT_SUPPORTED = 4;// 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。int PROPAGATION_NEVER = 5;// 以非事务方式执行,如果当前存在事务,则抛出异常。int PROPAGATION_NESTED = 6;// 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

3、

转载于:https://www.cnblogs.com/hoge66/p/9921404.html

Transactional 事务相关推荐

  1. @Transactional事务生效条件与样例

    @Transactional事务生效条件 @Transactional注释的方法,不能是private修饰 @Transactional注释的方法,必须是有接口的方法实现(通用的Spring面向接口编 ...

  2. SpringBoot 异常回滚 事务的使用___Springboot @Transactional 事务不回滚

    Springboot中事务的使用: 1.启动类加上@EnableTransactionManagement注解,开启事务支持(其实默认是开启的). 2.在使用事务的public(只有public支持事 ...

  3. 【Spring源码】Spring Transactional事务:传播机制(Propagation) 介绍 和 源码剖析

    [Spring源码]Spring Transactional事务:传播机制(Propagation) 源码剖析 关键词 AMethod调用BMethod,转载BMethod的角度来考虑:站在被调用者的 ...

  4. @Transactional事务中使用锁坑(@Transactional事务中使用锁失效)

    @Transactional事务中使用锁失效 说明: Spring中使用注解@Transactional作事务管理,@Transactional注解在方法上时,是方法完成之后才进行提交事务的 测试代码 ...

  5. @Transactional的用法详解及Transactional事务无效的源码分析

    数据库事务正确执行的四要素 1.原子性 事务是不可分割的最小的工作单元,事务内的操作要么全做,要么全不做,不能只做一部分. 2.一致性 事务执行前数据库的数据按照逻辑处于正确的状态,事务执行后数据库的 ...

  6. Java的@Transactional事务回滚

    @Transactional 基本原理概述 在应用系统调用声明@Transactional 的目标方法时,Spring Framework 默认使用 AOP 代理,在代码运行时生成一个代理对象,根据@ ...

  7. Spring官方都推荐使用的@Transactional事务,为啥我不建议使用!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 事务管理在系统开发中是不可缺少的一部分,Spring提供了 ...

  8. @Transactional事务几点注意

    这里面有几点需要大家留意: A. 一个功能是否要事务,必须纳入设计.编码考虑.不能仅仅完成了基本功能就ok. B. 如果加了事务,必须做好开发环境测试(测试环境也尽量触发异常.测试回滚),确保事务生效 ...

  9. Spring提取@Transactional事务注解的源码解析

    声明:本文是自己在学习spring注解事务处理源代码时所留下的笔记: 难免有错误,敬请读者谅解!!! 1.事务注解标签 <tx:annotation-driven /> 2.tx 命名空间 ...

  10. @Transactional事务的使用和注意事项及其属性

    事务管理 提示 @Transactional注解只能应用到public可见度的方法上,可以被应用于接口定义和接口方法,方法会覆盖类上面声明的事务. 示例: 例如用户新增需要插入用户表.用户与岗位关联表 ...

最新文章

  1. Fragment onViewCreated 的作用
  2. 工具 左侧服务列表_协作办公时代,在线编辑文档工具,安排!
  3. Azure Lambda Function创建失败 - 400 bad request和成功 - 201 Created
  4. java打印tomcat内存溢出_tomcat内存溢出问题监控工具
  5. Q123:PBRT-V3,各种形式的“光传播方程”的推导依据
  6. Tomcat----windows系统通过命令符“强制关闭Tomcat”
  7. 计算机考研具体学科准备
  8. 查找系统大文件占用WizTree 4.05.64位
  9. 棋牌游戏“拖拉机”牌型提取
  10. 2022数据安全法律法规标准关注文件整理
  11. JavaScript DOM 学习笔记
  12. 林光常颠覆传统的养生观 ,养生必读
  13. 哈工大计算机网络Mooc 第八章笔记(网络层(中))
  14. 电脑PHP动画制作画板,html5教程制作简单画板代码分享
  15. 一起来学k8s 38. 二进制k8s集群安装EFK
  16. linux+手机+gps,Linux环境下利用GPS+蓝牙实现移动定位
  17. 泰课在线android,泰课在线rollaball
  18. Unity3D 自学之路
  19. 永久免费内网穿透很简单,一看就明白(长文)
  20. 海凌科7621开发板适配新版openwrt

热门文章

  1. (一)MySQL优化之索引优化
  2. php数组有没有类似next方法,PHP 数组current跟next用法
  3. linux内核死锁检测机制 | oenhan,Linux内核CPU负载均衡机制 | OenHan
  4. 代码里无图片地址_项目实战:爬高清图片
  5. Android Studio无线连接设备调试,比数据线更方便
  6. 金额转换java_java金额转换
  7. Linux 实操 —— 日志筛选操作(sed与wc命令介绍)
  8. Linux进阶之路————Linux磁盘分区与挂载
  9. spring源码分析第六天------spring经典面试问题
  10. 安卓4.4.4安装哪个微信版本_??微信又更新!暗黑模式可独立设置,新增群接龙固定入口...