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