简单单解决你的事务回滚问题

转载 2017年08月18日 10:54:19
/**
     * 用户登录接口
     * 
     * 
     * 1明确事务方法前的命名规则
     * 2保证事务方法执行的时间尽可能的短,不允许出现循环操作,不允许出现RPC等网络请求操作
     * 3不允许所有的方法都使用事务,节省服务器性能和缩短数据库连接时间
     * 4如果出现有多个地方需要事务回滚时,使用自定义或原有的异常进行抛出,异常必须继承RunTimeError,否则不会触发回滚操作
     * 5使用TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();进行手动回滚
     * 
     */
    @Transactional
    public UserModel login(UserModel user){
        
        UserModel userEntity = new UserModel();
        
        
        userEntity = userDao.login(user);
        if(userEntity == null)
        {
            return null;
        }
        
        userEntity = userDao.login(user);
        if(userEntity == null)
        {
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return null;
        }
        else
        {
            return userEntity;
        }
    }




直接给出一个例子代码,上面只是记录一下,下面才是干货。

首先很多时候我们不会采用事务操作,但是当我们在一个服务层多次访问数据库特别是进行插入删除操作的时候,我们需要使用事务进行操作,也就是一个不成功,所有的操作全部回滚。

那么具体的事务特性我就不多说了,规范我也打在最上面的注释里面了。主要注意一下,

使用@Transactional 注解

如果第一次插入成功,第二次插入失败,执行TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 这条语句之后,第一次的插入动作就被回滚了,也就是并没有生效。

手动回滚看起来会比较实用一些。

然后对于抛出异常的那种自动回滚可以参考百度各种代码。比较麻烦一些,就不列举了。

 

补充一下:

使用Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();  设置回滚点,使用TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);回滚到savePoint。
 
 
后序补充详细属性配置(复杂)
举报

相关文章推荐

实现的简单python例子

本人学python没多久,不足的望指点 1.输入三个变量,然后安小到大排序

关于Spring事务回滚的问题

在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例 比如配置文件里有...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

关于Spring事务回滚的问题

在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会回滚的,如果没有自己捕获异常则事务会回滚,如下例 比如配置文件里有...

SpringMVC Mybatis的事务回滚问题

采用的基本搭建环境:SpringMVC、MyBatis、MySQL、tomcat         Spring事务管理分解了传统的全局事务管理和本地事务管理的劣势,使得在任何环境中都可以使用统一的事...

spring3MVC 事务无法回滚问题

搭建好Spring3MVC,用@Transactional方式进行事务管理,发现方法体内出错后事务不会回滚,依然提交成功 网上查了下了发现是spring的标签使用有问题 如果是搭建Spring...

事务回滚

框架里面用了Spring的AOP处理事务,事务针对Biz级别来做,而异常统一都用自定义的RuntimeException。 那段Biz中的代码没用RuntimeException,而是try cat...

大事务回滚估算

在系统上线、日常运维时,难免会出现由于SQL效率不佳,或者写错,导致出现回滚的现象;在大事务时,回滚常常耗时很久,如何较为准确得估算回滚的时间,可以帮助我们制定相应的计划

解决问题最简单的方法

这是一本小书,只有145页,7万字左右,花2个小时就能读完,但你会学到立马提高你解决问题能力的10多种方法。
  • foruok
  • foruok
  • 2016-08-20 07:09
  • 4604

Spring事务异常回滚,捕获异常不抛出就不会回滚

最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了....... 为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志。但是这边情况来了,当这个方法异常时候...

Spring事务之六(JUnit单测事务回滚)

更多文章:http://zhuqiuhui.space/ 测试代码 Case 1: 插入成功后会回滚 输出:insert :1 rows! Rolle...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)