當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring事物详解和传播行为
生活随笔
收集整理的這篇文章主要介紹了
Spring事物详解和传播行为
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
事物的四大特性ACID
- 原子性(Atomicity):事務(wù)是一個原子操作,由一系列動作組成。事務(wù)的原子性確保動作要么全部完成,要么完全不起作用。
- 一致性(Consistency):一旦事務(wù)完成(不管成功還是失敗),系統(tǒng)必須確保它所建模的業(yè)務(wù)處于一致的狀態(tài),而不會是部分完成部分失敗。在現(xiàn)實中的數(shù)據(jù)不應(yīng)該被破壞。
- 隔離性(Isolation):可能有許多事務(wù)會同時處理相同的數(shù)據(jù),因此每個事務(wù)都應(yīng)該與其他事務(wù)隔離開來,防止數(shù)據(jù)損壞。
- 持久性(Durability):一旦事務(wù)完成,無論發(fā)生什么系統(tǒng)錯誤,它的結(jié)果都不應(yīng)該受到影響,這樣就能從任何系統(tǒng)崩潰中恢復(fù)過來。通常情況下,事務(wù)的結(jié)果被寫到持久化存儲器中。
Spring事物傳播機制
Spring聲明式事務(wù)讓我們從復(fù)雜的事務(wù)處理中得到解脫。使得我們再也無需要去處理獲得連接、關(guān)閉連接、事務(wù)提交和回滾等這些操作。再也無需要我們在與事務(wù)相關(guān)的方法中處理大量的try…catch…finally代碼。我們在使用Spring聲明式事務(wù)時,有一個非常重要的概念就是事務(wù)屬性。事務(wù)屬性通常由事務(wù)的傳播行為,事務(wù)的隔離級別,事務(wù)的超時值和事務(wù)只讀標(biāo)志組成。我們在進(jìn)行事務(wù)劃分時,需要進(jìn)行事務(wù)定義,也就是配置事務(wù)的屬性
spring在TransactionDefinition接口中定義了七個事務(wù)傳播行為:
- propagation_requierd:如果當(dāng)前沒有事務(wù),就新建一個事務(wù),如果已存在一個事務(wù)中,加入到這個事務(wù)中,這是最常見的選擇。
- propagation_supports:支持當(dāng)前事務(wù),如果沒有當(dāng)前事務(wù),就以非事務(wù)方法執(zhí)行。
- propagation_mandatory:使用當(dāng)前事務(wù),如果沒有當(dāng)前事務(wù),就拋出異常。
- propagation_required_new:新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起。
- propagation_not_supported:以非事務(wù)方式執(zhí)行操作,如果當(dāng)前存在事務(wù),就把當(dāng)前事務(wù)掛起。
- propagation_never:以非事務(wù)方式執(zhí)行操作,如果當(dāng)前事務(wù)存在則拋出異常。
- propagation_nested:如果當(dāng)前存在事務(wù),則在嵌套事務(wù)內(nèi)執(zhí)行。如果當(dāng)前沒有事務(wù),則執(zhí)行與propagation_required類似的操作
總結(jié)
以上是生活随笔為你收集整理的Spring事物详解和传播行为的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis运行原理及源码解析
- 下一篇: MyBatis中的@Mapper注解使用