spring事務以及事務傳播

2021-10-21 17:03:18 字數 1185 閱讀 7101

事務必須服從acid原則。acid指的是原子性(atomicity)、一致性(consistency)、隔離性(isolation)

spring的事務管理的幾種實現方式:

1.程式設計式:

首先基於pojo的話一般就是用這種,在**中呼叫begintransaction()、commit()、rollback()等事務管理相關的方法。

spring程式設計式事務的使用:

這裡我的說一下別的:

他這裡是@autowired,記得在xml裡進行配置

(舉乙個別人的例子)

public void transfer(final string outer, final string inner, final int money)

});}

簡單的說法就是事務傳播行為是用來描述某乙個事務傳播行為修飾的方法被巢狀進另乙個方法時事務如何傳播。比如:

public void methoda()

@transaction(propagation=***)

public void methodb()

此時可以看到方法a巢狀呼叫了方法b,方法b的事務傳播行為由@transaction(propagation=***)設定決定。

不過要注意的是,這裡方法a並沒有開啟事務,某乙個事務傳播行為修飾的方法並不是必須要在開啟事務的外圍方法中呼叫。

required

代表如果已經存在乙個事務,就加入到這個事務中。如果當前沒有事務,就新建乙個事務,就是預設的事務傳播設定。

2.supports

代表如果已經存在乙個事務,就加入到這個事務中。如果當前沒有事務,就以非事務方式執行。

3.mandatory

代表如果已經存在乙個事務,就加入到這個事務中。如果當前沒有事務,就以丟擲異常。

4.requires_new

代表新建事務,如果已經存在乙個事務,就把這個事務掛起。

5.not_support

代表如果已經存在乙個事務,就把這個事務掛起,並以非事務方式執行。

6.never

代表如果已經存在乙個事務,就丟擲異常。如果當前沒有事務,以非事務方式執行。

7.nested

代表建立當前事務的子事務

(最近才開始寫部落格,排版什麼的還有很多問題,內容上也不敢說是絕對正確的,有不足的地方請各位大佬幫忙斧正,內容多為網上資料加上一點點自己的理解,侵刪,謝謝!)

spring事務傳播

採用程式設計式事務 1 getcurrentsession 與opensession 的區別?採用getcurrentsession 建立的session會繫結到當前執行緒中,而採用opensession 建立的session則不會 採用getcurrentsession 建立的session在co...

Spring事務傳播

required 預設 如果當前存在事務,就加入該事務,如果不存在,則建立乙個新的事務 supports 如果呼叫者有事務,則加入該事務,如果沒有,則以非事務方式執行 mandatory 如果存在事務,則加入該事務,如果不存在事務,則拋異常 requires new 重新建立乙個新的事務,如果當前存...

Spring事務傳播

package org.springframework.transaction import org.springframework.lang.nullable public inte ce transactiondefinition 事務的傳播面向的是乙個方法在另乙個方法中執行時對事務的處理方式。...