Spring事務的傳播行為是什么

這篇文章主要介紹“Spring事務的傳播行為是什么”,在日常操作中,相信很多人在Spring事務的傳播行為是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Spring事務的傳播行為是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

專注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)恩施土家免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

一、事務的特性ACID

這四個英文單詞拼寫我一直記不住,求記憶方法

  • 原子性(Atomicity):事務是一系列原子操作,要么全部成功,要么全部失敗。

  • 一致性(Consistency):一旦完成(不管是成功還是失敗),確保它所在的一系列業(yè)務狀態(tài)保持一致,狀態(tài)都是成功,或者都是失敗,不能一部分成功一部分失敗。

  • 隔離性(Isolation):不同事務同時進行某項業(yè)務,處理相同的數(shù)據(jù)時候,需要保證事務之間相互獨立,互相之間數(shù)據(jù)不影響。

  • 持久性(Durability):一旦事務完成,無論發(fā)生什么系統(tǒng)性錯誤,事務執(zhí)行后的數(shù)據(jù)都被持久化了,不會因為重啟或其他操作對數(shù)據(jù)進行更改。

二、spring事務傳播特性的定義以及案例分析

我們先給出定義再分別進行簡單的代碼分析

給出百度圖片,請大家參考,首先生命力如果想在工程中運用事務spring 的xml必須開啟事務,以下這些特性一般都是在xml屬性中進行配置。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

類似這種的配置一定要有,否則萬事具備只欠東風,這個是DB事務有JTA和JPA以及Herbernate等,這里就不展開說明,可自行百度。

Spring事務的傳播行為是什么

三、案例解析事務傳播7大行為

1、無事務,這個時候id 為16的第一次插入成功,第二次插入的時候失敗,庫中留存第一次的數(shù)據(jù)

Spring事務的傳播行為是什么
  無事務運行

2、propagation_required,默認事務的傳播行為required,在進行實驗2的時候將表中id為16的數(shù)據(jù)先刪除以免影響接下來的測試。 @Transactional(propagation=Propagation.REQUIRED) ==   @Transactional這兩個的作用是一樣的沒有事務創(chuàng)建一個事務執(zhí)行,

Spring事務的傳播行為是什么
事務的傳播特行為為required
結果是因為主鍵沖突將事務進行了回滾,所以兩條數(shù)據(jù)都沒有插入進去。

3、propagation_supports,如果當前程序存在事務就加入該事務運行,如果不存在事務則在非事務中運行

Spring事務的傳播行為是什么

事務的傳播行為性為supports
因為調用方未用事務那么就在非事務中運行,所以插入了first的第一條數(shù)據(jù)。

4、propagation_mandatory,必須在一個事務中運行,否則就會拋出異常mandatory 這個單詞有強制性的意思我們默認用required 而不用mandatory,是因為mandatory不能自動創(chuàng)建事務。

Spring事務的傳播行為是什么
事務的傳播行為為manatory
因為調用的外層沒有事務,所以兩條數(shù)據(jù)沒有插入。大家想想下面這種寫法會發(fā)生什么現(xiàn)象
Spring事務的傳播行為是什么
事務的傳播行為mandatory

5、propagation_ required _new,不管事務是不是存在,都會另起一個事務,如果事務存在則將當前事務掛起,重新執(zhí)行新加的事務

Spring事務的傳播行為是什么
事務的傳播行為required_new
結果和require一樣,兩條數(shù)據(jù)都沒有入庫,唯一健沖突導致第一條數(shù)據(jù)回滾,大家可以思考下我下面這兩種情況。

Spring事務的傳播行為是什么

情景1新起的事務拋出異常會不會讓外圍事務回滾?

Spring事務的傳播行為是什么

情景2外圍事務失敗會不會導致新起事務已提交的回滾?

6、 propagation_ not _support,表示不在事務中運行,如果當前存在事務則將事務掛起

Spring事務的傳播行為是什么
事務的傳播行為not_suppoted
這種情景下,如果你根據(jù)我的思路一步走的應該可以想到id 為17的入庫,第二條主鍵沖突雖然然而notSupportSonTransationsl()這個方法沒有事務所以不影響第一條入庫情況,但是外圍事務id為16的要進行回滾了,所以庫中只有一條數(shù)據(jù)id=17的。

Existing transaction found for transaction marked with propagation ‘never’" class="reference-link">7、 propagation_never,表示當前方法不能運行在事務當中,如果有事務則會拋出異常——>Existing transaction found for transaction marked with propagation ‘never’

Spring事務的傳播行為是什么
事務的傳播行為NEVER

8、 propagation_nested,這種嵌套的事務,外圍如果沒有事務則自己另起一個事務,可獨立與外圍事務進行單獨的提交或者回滾(這句話不要理解錯了),下面這個案例同樣的數(shù)據(jù)一條也沒有落入庫中,

Spring事務的傳播行為是什么
事務的傳播行為nested

到此,關于“Spring事務的傳播行為是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

分享名稱:Spring事務的傳播行為是什么
鏈接URL:http://bm7419.com/article48/jjegep.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信小程序ChatGPT、自適應網(wǎng)站、企業(yè)建站、云服務器商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設