1. 程式人生 > >關於JaveEE中三大框架事務回滾異常捕獲的問題

關於JaveEE中三大框架事務回滾異常捕獲的問題

我搭建了一個SSH框架,然後在MySQL資料庫中設定某表的一個欄位唯一值約束,後來我插入一條記錄,該記錄與資料庫中的記錄存在唯一值衝突,這樣hibernate就會丟擲DataAccessException異常,該異常是一個執行時異常,不需要人為處理。我在Dao層進行異常捕獲,程式碼如下


經過專案執行測試,發現無論在業務邏輯層還是Dao層根本捕獲不到該異常,經過我的不厭其煩的百度,發現這個問題原因和事務處理相關:我的事務管理設定在業務邏輯Service層,

想表中插入重複的唯一值就會產生錯誤,造成事務回滾,事務無法正常提交,這樣就會將錯誤延遲到進行事務管理層的上一層(我的事務管理在Service層,上一層呼叫service層的control層即action)產生,所以錯誤在action層產生就只有在該層抓取、處理,處理異常程式碼如下:


異常被我成功捕獲,瀏覽器端不會有錯誤資訊提示。

如果事務管理設定在Dao層,則異常只能在service層進行抓取捕獲。

希望對初學者有用!