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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM