文档章节

Spring 事务回滚机制

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

异常回滚示例

  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();语句,手动回滚,这样上层就无需去处理异常



© 著作权归作者所有

共有 人打赏支持
满小茂
粉丝 75
博文 119
码字总数 131884
作品 0
成都
程序员
私信 提问
Spring 声明式注解事务实现机制

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

狂奔的熊二
09/21
0
0
spring事务和jdbc事务

Spring事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取...

TonyStarkSir
04/16
0
0
Spring 事务传递教程

通过这篇文章,你将学习到Spring框架中中事务的传递 1. 简介 在处理Spring管理的事务时,开发人员可以以传播的方式定义事务的行为。换句话说,开发人员能够决定业务方法如何被封装在逻辑和物...

zetaplusae
2013/10/25
1K
0
Spring 深入理解事务原理

IT虾米的博客 一、事务的基本原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步...

hgqxjj
06/26
0
0
Spring 事务相关知识(转载)

Spring 事务的传播属性 所谓spring事务的传播属性,就是定义在存在多个事务同时存在的时候,spring应该如何处理这些事务的行为。这些属性在TransactionDefinition中定义,具体常量的解释见下...

晨猫
2017/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

老男孩 - python基础

基础知识 %s 字符串格式输出 ,%d 数字格式化输出 可变类型(mutable):列表,字典,集合 不可变类型(unmutable):数字,字符串,元组 列表 基础 l = []l =[‘张三‘,‘李四’,'alex']...

以谁为师
8分钟前
0
0
【Keras】减少过拟合的秘诀——Dropout正则化

Dropout正则化是最简单的神经网络正则化方法。其原理非常简单粗暴:任意丢弃神经网络层中的输入,该层可以是数据样本中的输入变量或来自先前层的激活。它能够模拟具有大量不同网络结构的神经...

阿里云官方博客
9分钟前
0
0
使用openoffice实现文档在线预览

下载地址:http://www.openoffice.org/zh-cn/download/ 安装 wget https://jaist.dl.sourceforge.net/project/openofficeorg.mirror/4.1.6/binaries/zh-CN/Apache_OpenOffice_4.1.6_Linux_x8......

果树啊
14分钟前
0
0
微信小程序 用canvas绘制的图插入到分享中

用canvas绘制图 createNewImg: function () {var that = this;var ctx = wx.createCanvasContext('mycanvas');ctx.setFillStyle("#F4F4F4");// context.setFillStyle("#fff")ctx.fillRe......

潇潇程序缘
21分钟前
1
0
公司报表数据库优化

报表系统优化 背景: 11.22早晨 刚放下背包,收到一份邮件,邮件意思是公司报表数据库慢,让我帮忙看看。邮件还附带了一个SQL文本,指出这个SQL慢。随后电话了开发人员了解事情来龙去脉,原来...

hnairdb
22分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部