Spring宣告式事務管理的一些事

2021-09-01 15:12:54 字數 935 閱讀 7479

對於read-only的真實理解:推薦帖子:

靠底層的jdbc驅動和資料庫的支援。

在大多數資料庫系統下,唯讀事務裡面是不可以修改資料,並且,在同乙個事務裡面同乙個sql讀出來的同一條記錄是不會變化的,這是我們開啟readonly最重要的原因:我們需要能夠可重複讀。 它是效能優化的推薦配置。

對於沒有執行資料庫操作的方法,而被spring進行事務管理,同樣會占用資料庫資源。所以對於執行時間比較長的方法,比如要進行一些網路請求,最好不要進行事務管理,因為這樣會長時間占用資料庫連線資源,當併發量大的時候,會造成資料庫連線被佔盡,而其他請求則一直排隊等候。

業務層中的方法呼叫丟擲異常:

有時spring出丟擲這樣的異常transaction rolled back because it has been marked as rollback-only一般是由於乙個server呼叫另乙個server其中乙個server丟擲異常,雖然另乙個server捕獲了異常,但是以上異常同樣會丟擲,因為乙個server丟擲異常spring認為攔截此server應該回滾,但是另乙個server卻捕獲了異常不用回滾,但是spring已經標記了需要回滾,所以會發生此類事情。

事務的傳播屬性

propagation_required--支援當前事務,如果當前沒有事務,就新建乙個事務。這是最常見的選擇。

propagation_supports--支援當前事務,如果當前沒有事務,就以非事務方式執行。 

propagation_mandatory--支援當前事務,如果當前沒有事務,就丟擲異常。 

propagation_requires_new--新建事務,如果當前存在事務,把當前事務掛起。 

propagation_not_supported--以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。 

propagation_never--以非事務方式執行,如果當前存在事務,則丟擲異常。

Spring宣告式事務管理

使用事務的目的是將整個業務的邏輯處理置於同乙個事務中,方便對整個業務進行管理,如業務的事務回滾 在編寫 時,為了將乙個業務的核心邏輯處理放入事務中,有時會這樣寫 session session sf.opensession 開啟乙個session session.gettransaction beg...

Spring宣告式事務管理

spring的宣告式事務管理,可以說是開發人員的福音,也是架構師們的法寶 通過這個神器我們可以有效的解決事務不一致 連線洩露等問題 下面我們就介紹一下spring宣告式事務的配置 1 建立事務管理器 2 制定事務管理 3 建立切面 備註 事務管理機制說明propagation 屬性值 require...

Spring宣告式事務管理

classpath hibernate.cfg.xml public class usermanagerimpl extends hibernatedaosupport implements usermanager public void adduser user user throws excep...