Spring宣告式事務管理報異常事務不回滾

2021-09-02 18:55:30 字數 596 閱讀 7313

spring宣告式事務管理報異常事務不回滾

緣由:配置了乙個新的ssh環境,資料庫mysql也是新的,在測試spring事務的過程中發現出現異常事務怎麼都不回滾,網上檢視很多大神指導,在此總結。

1、首先要確定的就是你的mysql資料庫引擎用的是哪乙個,可以使用命令:mysql>show engines 進行檢視,myisam不支援資料回滾,innodb支援資料回滾,修改方式:停止資料庫服務;修改資料庫目錄下my.minix檔案在[mysqld]下增加default-storage-engine=innodb,注釋掉:#default-storage-engine=myisam;重啟服務

2、另外一種可能就是異常處理,spring事務回滾機制只針對執行時異常才會回滾也就是runtimeexception,即執行時異常,為非受檢(unchecked)異常;非執行時異常不回滾,切注意,可以try catch自己拋個異常,也可以新增@transactional(rollbackfor=exception.class)

3、還有一種在網上有人發現假如乙個service中有方法新增給spring事務管理a,另外乙個方法呼叫a,為方法b沒有事務管理,那麼在呼叫service時假如直接呼叫a則事務回滾,呼叫b事務不回滾

Spring宣告式事務管理

使用事務的目的是將整個業務的邏輯處理置於同乙個事務中,方便對整個業務進行管理,如業務的事務回滾 在編寫 時,為了將乙個業務的核心邏輯處理放入事務中,有時會這樣寫 session session sf.opensession 開啟乙個session session.gettransaction beg...

Spring宣告式事務管理

spring的宣告式事務管理,可以說是開發人員的福音,也是架構師們的法寶 通過這個神器我們可以有效的解決事務不一致 連線洩露等問題 下面我們就介紹一下spring宣告式事務的配置 1 建立事務管理器 2 制定事務管理 3 建立切面 備註 事務管理機制說明propagation 屬性值 require...

Spring宣告式事務管理

classpath hibernate.cfg.xml public class usermanagerimpl extends hibernatedaosupport implements usermanager public void adduser user user throws excep...