在Spring中發生的SQL異常可以觸發事務回滾的原因

在對Spring的事務回滾捕獲的異常類型進行測試,發現當出現SQL異常時可以觸發事務回滾,但是通過查看文檔發現,Java.lang.SQLExcepetion是Java.lang.Excepetion的子類,在沒有對事務設置rollbackfor=Exception.class時是不會默認對捕獲的Excepetion類型異常觸發事務回滾操作,而實際情況卻與此相反,觸發了事務回滾。
在項目開發中引入了spring框架後,SQLExcepetion被org.springframework重寫,經過重寫後涉及到dao的異常都是java.lang.RuntimeException的子類。因此事務回滾纔會發生。

 

 我們知道 org.springframework.dao.DuplicateKeyException來自spring-tx-4.0.0.RELEASE.jar
                      反編譯可見:
                      java.lang.Object
                               |____java.lang.Throwable
                                    |____ java.lang.Exception
                                         |____ java.lang.RuntimeException
                                              |____ org.springframework.core.NestedRuntimeException
                                                  |____org.springframework.dao.DataAccessException
                                                       |____  org.springframewor

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章