1.spring事務原理:spring事務的本質其實就是資料庫對事務的支援,沒有資料庫對事務的支援就無法提供事務的功能。
2.spring事務傳播屬性:
propagation_required 支援當前事務,如果當前沒有事務,就新建乙個事務。這是最常見的選擇,也是 spring 預設的事務的傳播。
propagation_requires_new 新建事務,如果當前存在事務,把當前事務掛起。新建的事務將和被掛起的事務沒有任何關係,是兩個獨立的事務,外層事務失敗回滾之後,不能回滾內層事務執行的結果,內層事務失敗丟擲異常,外層事務捕獲,也可以不處理回滾操作
propagation_supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。
propagation_mandatory 支援當前事務,如果當前沒有事務,就丟擲異常。
propagation_not_supported 以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
propagation_never 以非事務方式執行,如果當前存在事務,則丟擲異常。
propagation_nested 如果乙個活動的事務存在,則執行在乙個巢狀的事務中。如果沒有活動事務,則按required屬性執行。它使用了乙個單獨的事務,這個事務擁有多個可以回滾的儲存點。內部事務的回滾不會對外部事務造成影響。它只對datasourcetransactionmanager事務管理器起效。
3.spring事務隔離級別:
isolation_default 這是個 platfromtransactionmanager 預設的隔離級別,使用資料庫預設的事務隔離級別。另外四個與 jdbc 的隔離級別相對應。
isolation_read_uncommitted 這是事務最低的隔離級別,它充許另外乙個事務可以看到這個事務未提交的資料。這種隔離級別會產生髒讀,不可重複讀和幻像讀。
isolation_read_committed 保證乙個事務修改的資料提交後才能被另外乙個事務讀取。另外乙個事務不能讀取該事務未提交的資料。
isolation_repeatable_read 這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。
isolation_serializable 這是花費最高代價但是最可靠的事務隔離級別。事務被處理為順序執行。
Spring事務詳解
事務傳播行為型別 說明propagation required 如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務中,加入到這個事務中。這是最常見的選擇。propagation supports 支援當前事務,如果當前沒有事務,就以非事務方式執行。propagation mandatory 使用...
Spring事務詳解
什麼叫事務?關於事務,最簡單最常見的例子就是取錢。atm機取錢有兩個步驟,第一步輸入金額密碼,銀行卡扣掉1000元,第二步atm出鈔1000元,這兩個步驟必須要麼都執行成功,要麼都不執行。如果其中乙個步驟失敗了,必須把整個過程回滾,取消掉所有操作,這就是事務最基本的應用,事務就是用來解決類似問題的。...
Spring 事務機制詳解
spring事務機制主要包括宣告式事務和程式設計式事務,此處側重講解宣告式事務,程式設計式事務在實際開發中得不到廣泛使用,僅供學習參考。spring 宣告式事務讓我們從複雜的事務處理中得到解脫。使得我們再也無需要去處理獲得連線 關閉連線 事務提交和回滾等這些操作。再也無需要我們在與事務相關的方法中處...