這裡面有幾點需要大家留意:
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,事務不會回滾。
Transactional事務原理
這個是spring的宣告式事務管理,基於aop程式設計,是一種動態 模式。疑問 1.這個註解是怎麼生效的?配置了transactional註解後,spring容器初始化bean的時候,給他生成 類,執行的時候控制事務的提交。2.多個資料庫的事務怎麼辦?你需要在註解的地方指明資料來源 transact...
Transactional事務幾點注意
這裡面有幾點需要大家留意 a.乙個功能是否要事務,必須納入設計 編碼考慮。不能僅僅完成了基本功能就ok。b.如果加了事務,必須做好開發環境測試 測試環境也盡量觸發異常 測試回滾 確保事務生效。c.以下列了事務使用過程的注意事項,請大家留意。1.不要在介面上宣告 transactional 而要在具體...
Transactional事務幾點注意
這裡面有幾點需要大家留意 a.乙個功能是否要事務,必須納入設計 編碼考慮。不能僅僅完成了基本功能就ok。b.如果加了事務,必須做好開發環境測試 測試環境也盡量觸發異常 測試回滾 確保事務生效。c.以下列了事務使用過程的注意事項,請大家留意。1.不要在介面上宣告 transactional 而要在具體...