文档章节

Spring 事务回滚机制

满小茂
 满小茂
发布于 2015/12/31 10:40
字数 276
阅读 1.3K
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

异常回滚示例

  1. 捕获异常,不抛出,事物不能回滚!!!

if(userSave){          
    try {         
        userDao.save(user);          
        userCapabilityQuotaDao.save(capabilityQuota);         
     } catch (Exception e) {          
        logger.info("能力开通接口,开户异常,异常信息:"+e);         
     }         
 }

  2.捕获异常,抛出运行时异常,回滚。当一个方法出错,另一个方法必然回滚

if(userSave){         
     try {          
        userDao.save(user);          
        userCapabilityQuotaDao.save(capabilityQuota);         
       } catch (Exception e) {         
        logger.info("能力开通接口,开户异常,异常信息:"+e);          
        throw new RuntimeException();         
     }          
}

 3.捕获异常,手动回滚

if(userSave){          
    try {          
        userDao.save(user);          
        userCapabilityQuotaDao.save(capabilityQuota);          
    } catch (Exception e) {          
        logger.info("能力开通接口,开户异常,异常信息:"+e);          
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();         
    }         
 }

 异常事务回滚解决方案: 

 方案1.

       例如service层处理事务,那么service中的方法中不做异常捕获,或者在catch语句中最后增加throw new RuntimeException()语句,以便让aop捕获异常再去回滚,并且在service上层(webservice客户端,view层action)要继续捕获这个异常并处理

  方案2.

       在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,这样上层就无需去处理异常



© 著作权归作者所有

满小茂
粉丝 80
博文 122
码字总数 139271
作品 0
成都
程序员
私信 提问
加载中
请先登录后再评论。
spring事务详解(二)简单样例

系列目录 spring事务详解(一)初探事务 spring事务详解(二)简单样例 spring事务详解(三)源码详解 spring事务详解(四)测试验证 spring事务详解(五)总结提高 一、引子 在Spring中,事...

osc_dos38x1o
2018/09/26
15
0
添加@Transactional ------spring boot中session中断的问题及其解决

近期做收益项目,大规模使用spring的定时任务,然一些错误如Null Session,Not Proxy.代码无法应用. 前段时间查了下,发现一些解决方案.主要是查询之后session已经关闭,最佳方案是修改session的作...

流光韶逝
2016/11/23
162
0
Spring 声明式事务管理(1)

Spring 声明式事务管理介绍 说明:本文基于 jdk 1.8 ,spring-framework 5.1.7.RELEASE。 Spring 的声明式事务也就是通过配置的方式来管理事务,而不通过硬编码的方式来管理事务。关系型数据...

BryceLoski
2019/06/17
91
0
Spring 声明式注解事务实现机制

Spring中注解事务实现机制 在使用@Transactional 注解管理事务时步骤很简单。但是如果对@Transactional理解不够透彻,很容易出现事务不起作用的情况。所以,在对@Transactional的实现机制要有...

狂奔的熊二
2018/09/21
284
0
@Transactional(事务讲解)和springboot 整合事务

概述 事务在编程中分为两种:声明式事务处理和编程式事务处理 编程式事务处理:编码方式实现事务管理,常与模版类TransactionTemplate(推荐使用) 在业务代码中实现事务。 可知编程式事务每次...

osc_44jaxl0s
2019/02/14
13
0

没有更多内容

加载失败,请刷新页面

加载更多

Git 安装

下载地址: https://pc.qq.com/detail/13/detail_22693.html https://git-scm.com/ 安装参考: https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git 获取Git安装程序......

osc_a7a1prn6
27分钟前
24
0
gin教程

Golang Gin 实战(十)| XML渲染 Golang Gin 实战(九)| JSONP跨域和劫持 Golang Gin 实战(八)| JSON渲染输出 Golang Gin 实战(七)| 分组路由源代码分析 Golang Gin 实战(六)| 获取F...

osc_slfjdpj6
29分钟前
16
0
Command and Query Responsibility Segregation (CQRS) pattern

Command and Query Responsibility Segregation (CQRS) pattern The Command and Query Responsibility Segregation (CQRS) pattern separates read and update operations for a data store......

osc_xah3duav
30分钟前
20
0
VMXNET3与E1000E与E1000的比较

详细信息请查看参考资料的原文,这里仅翻译一些要点。 VMware管理员在选择虚拟网卡的时候有两类选择, 仿真型虚拟网卡和超虚拟化型的虚拟网卡。具体如下: 仿真型(Emulated)虚拟网卡:好处...

osc_g96tdr1z
31分钟前
24
0
Implementing event-based communication between microservices (integration events)

https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/integration-event-based-microservice-communications#integration-......

osc_6t6cjs45
32分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部