Spring框架中關於事務管理操作數據庫異常回滾失敗問題解決


最近在學習Spring5,學到事務管理這一塊,按照教程一步一步操作,編寫了一個轉賬操作的Service類,使用JdbcTemplate進行連接數據庫,在數據庫中用戶表創建兩個賬戶,轉賬方法對其中一個賬戶余額增加100元,對另一個減少100元,在Service類中有兩個方法,一個減少錢,一個增加錢,對整個類添加@Transactional事務注解,並在兩個方法之間故意設置一句int i = 10/0;的異常代碼。運行測試,程序拋出ArithmeticException異常,加錢方法沒有被執行,同時事務管理沒有生效,lucy賬戶的余額減少了100,在遇到異常的情況下沒有發生回滾操作


通過網上百度了一堆資料,發現原來是數據庫引擎的問題,暈死。。。。

InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,基本的差別為:MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級數據庫功能。

在數據庫中創建表的時候,默認使用了MyISAM,將其改成InnoDB以后,繼續測試,成功了!,在程序執行到異常的時候,事務操作生效,回滾了失敗的轉賬操作,lucy賬戶余額沒有減少。


免責聲明!

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



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