什麼是事務的傳播特性?(轉載)

原文鏈接:http://longdechuanren.iteye.com/blog/646497

 

我們都知道事務的概念,那麼事務的傳播特性是什麼呢?(此處着重介紹傳播特性的概念,關於傳播特性的相關配置就不介紹了,可以查看spring的官方文檔)

 
在我們用SSH開發項目的時候,我們一般都是將事務設置在Service層 那麼當我們調用Service層的一個方法的時候它能夠保證我們的這個方法中執行的所有的對數據庫的更新操作保持在一個事務中,在事務層裏面調用的這些方法要麼全部成功,要麼全部失敗。那麼事務的傳播特性也是從這裏說起的。

 
如果你在你的Service層的這個方法中,除了調用了Dao層的方法之外,還調用了本類的其他的Service方法,那麼在調用其他的Service方法的時候,這個事務是怎麼規定的呢,我必須保證我在我方法裏掉用的這個方法與我本身的方法處在同一個事務中,否則如果保證事物的一致性。事務的傳播特性就是解決這個問題的,“事務是會傳播的”在Spring中有針對傳播特性的多種配置我們大多數情況下只用其中的一種:PROPGATION_REQUIRED:這個配置項的意思是說當我調用service層的方法的時候開啓一個事務(具體調用那一層的方法開始創建事務,要看你的aop的配置),那麼在調用這個service層裏面的其他的方法的時候,如果當前方法產生了事務就用當前方法產生的事務,否則就創建一個新的事務。這個工作使由Spring來幫助我們完成的。

 
以前沒有Spring幫助我們完成事務的時候我們必須自己手動的控制事務,例如當我們項目中僅僅使用hibernate,而沒有集成進spring的時候,我們在一個service層中調用其他的業務邏輯方法,爲了保證事物必須也要把當前的hibernate session傳遞到下一個方法中,或者採用ThreadLocal的方法,將session傳遞給下一個方法,其實都是一個目的。現在這個工作由spring來幫助我們完成,就可以讓我們更加的專注於我們的業務邏輯。而不用去關心事務的問題。
默認情況下當發生RuntimeException的情況下,事務纔會回滾,所以要注意一下 如果你在程序發生錯誤的情況下,有自己的異常處理機制定義自己的Exception,必須從RuntimeException類繼承 這樣事務纔會回滾!

 

特別說明:本人轉載文章純爲技術學習,總結經驗,並無其他目的,若有他人繼續轉載,請鏈接原作者的地址,而不是本文的地址,以示對作者的尊重。最後對原作者的辛勤勞動表示感謝!

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