事務的注意事項

2021-08-22 11:42:09 字數 1106 閱讀 3757

a. 乙個功能是否要事務,必須納入設計、編碼考慮。不能僅僅完成了基本功能就ok。

b. 如果加了事務,必須做好開發環境測試(測試環境也盡量觸發異常、測試回滾),確保事務生效。

c. 以下列了事務使用過程的注意事項,請大家留意。

1. 不要在介面上宣告@transactional ,而要在具體類的方法上使用 @transactional 註解,否則註解可能無效。

2.不要圖省事,將@transactional放置在類級的宣告中,放在類宣告,會使得所有方法都有事務。故@transactional應該放在方法級別,不需要使用事務的方法,就不要放置事務,比如查詢方法。否則對效能是有影響的。

3.使用了@transactional的方法,對同乙個類裡面的方法呼叫, @transactional無效。比如有乙個類test,它的乙個方法a,a再呼叫test本類的方法b(不管b是否public還是private),但a沒有宣告註解事務,而b有。則外部呼叫a之後,b的事務是不會起作用的。(經常在這裡出錯)

4.使用了@transactional的方法,只能是public,@transactional註解的方法都是被外部其他類呼叫才有效,故只能是public。道理和上面的有關聯。故在 protected、private 或者 package-visible 的方法上使用 @transactional 註解,它也不會報錯,但事務無效。

5.經過在icore-claim中測試,效果如下:

a.丟擲受查異常***exception,事務會回滾。

b.丟擲執行時異常nullpointerexception,事務會回滾。

c.quartz中,execute直接呼叫加了@transactional方法,可以回滾;間接呼叫,不會回滾。(即上文3點提到的)

d.非同步任務中,execute直接呼叫加了@transactional方法,可以回滾;間接呼叫,不會回滾。(即上文3點提到的)

e.在action中加上@transactional,不會回滾。切記不要在action中加上事務。

f.在service中加上@transactional,如果是action直接調該方法,會回滾,如果是間接調,不會回滾。(即上文3提到的)

g.在service中的private加上@transactional,事務不會回滾。

事務注意事項

注意事項 1.在需要事務管理的地方加 transactional註解。transactional 註解可以被應用於介面定義和介面方法 類定義和類的 public 方法上。transactional註解只能應用到 public 可見度的方法上。如果你在 protected private 或者 pac...

EJB 事務注意事項

在上篇文章我們提到 當執行多個事務的時候 並且這些事務方式資料庫中的相同資料會出現一系列的併發問題 這些問題彙總起來總共有以下幾類.丟失更新 撤銷乙個事務時,把其他事務已提交的更新資料覆蓋。髒讀 乙個事務讀到另乙個事務為提交的更新資料。不可重複讀 乙個事務讀到另乙個事務已提交的更新資料。幻像讀 乙個...

事務異常注意事項

主要點 try.catch不會返回物件錯誤或者字段錯誤等型別的錯誤當 set xact abort 為 on 時,如果執行 transact sql 語句產生執行時錯誤,則整個事務將終止並回滾。當 set xact abort 為 off 時,有時只回滾產生錯誤的 transact sql 語句,而...