• Spring:Spring事务手动回滚方式


    方法1:

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

    方法2:

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

    //普通缴费  
        @Transactional  
        public String commonMoney(Receipt rpt,Moneyrecord mors){  
            rpt.setState(1);  
            int a=dao.insert(rpt);  
            if(a<=0) return"缴费失败";  
            mors.setPric(rpt.getPic());  
            mors.setExid(rpt.getPid());  
            mors.setState(1);  
            boolean tf=mrs.custom(mors);  
            if(!tf){  
                //事务回滚
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  
                return"余额不足";  
            }  
            return "OK";  
        } 

    方法3:

    设置回滚点进行回滚事务

    //设置回滚点,
    Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();  
    
    //回滚到savePoint事务点
    TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
  • 相关阅读:
    UNIX网络编程 第9章
    UNIX网络编程 第8章 基本UDP套接字编程
    UNIX网络编程 第7章 套接字选项
    UNIX网络编程 第6章 I/O复用:select和poll函数
    UNIX网络编程 第5章 TCP客户/服务器程序示例
    天神下凡
    藏宝图
    黑红树
    杀人游戏[中山市选2011]
    Monotonicity 2[POI2010]
  • 原文地址:https://www.cnblogs.com/nhdlb/p/12083554.html
Copyright © 2020-2023  润新知