zoukankan      html  css  js  c++  java
  • @Transactional spring事务回滚相关

    还可以设置回滚点,看下面
    /**
         * 用户登录接口
         * 
         * 
         * 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。

     
     
    后序补充详细属性配置(复杂)

          </div>
    

    转载:https://blog.csdn.net/meandmyself/article/details/77366945

  • 相关阅读:
    h5 拍照上传 代码
    java jdbc 链接本地mysql数据库 报错 Access denied for user 'root'@'localhost' (using password: YES)
    react.js 中对props 的理解
    react.js 如何 设置页面div 背景图片
    关于Vue.js 和 react.js 的异同
    如何用 npm ,搭建react 项目
    如何进行vue vux版本更新
    js 继承 函数
    absolute 和 z-index妙用
    关于 white-space: pre-wrap;的灵异现象
  • 原文地址:https://www.cnblogs.com/duende99/p/11047190.html
Copyright © 2011-2022 走看看