日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析

發(fā)布時間:2024/7/19 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

網(wǎng)上關(guān)于Spring事務(wù)傳播性以及隔離型的文章漫天蓋地,還有不負(fù)責(zé)任的直接復(fù)制名詞意思,文章雖然很多卻是看的云里霧里,我們今天將給出案例分別和大家一起學(xué)習(xí)。

1、spring給出經(jīng)常面試的考點Spring事務(wù)的4個特性含義---這個很容易理解

2、spring事務(wù)傳播特性的定義以及案例分析

一、事務(wù)的特性ACID

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

  • 原子性(Atomicity):事務(wù)是一系列原子操作,要么全部成功,要么全部失敗。
  • 一致性(Consistency):一旦完成(不管是成功還是失敗),確保它所在的一系列業(yè)務(wù)狀態(tài)保持一致,狀態(tài)都是成功,或者都是失敗,不能一部分成功一部分失敗。
  • 隔離性(Isolation):不同事務(wù)同時進(jìn)行某項業(yè)務(wù),處理相同的數(shù)據(jù)時候,需要保證事務(wù)之間相互獨立,互相之間數(shù)據(jù)不影響。
  • 持久性(Durability):一旦事務(wù)完成,無論發(fā)生什么系統(tǒng)性錯誤,事務(wù)執(zhí)行后的數(shù)據(jù)都被持久化了,不會因為重啟或其他操作對數(shù)據(jù)進(jìn)行更改。

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

我們先給出定義再分別進(jìn)行簡單的代碼分析

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

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

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

三、案例解析事務(wù)傳播7大行為

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

無事務(wù)運行

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

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

3、propagation_supports,如果當(dāng)前程序存在事務(wù)就加入該事務(wù)運行,如果不存在事務(wù)則在非事務(wù)中運行

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

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

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

事務(wù)的傳播行為mandatory

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

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

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

情景2外圍事務(wù)失敗會不會導(dǎo)致新起事務(wù)已提交的回滾?

6、 propagation_ not _support,表示不在事務(wù)中運行,如果當(dāng)前存在事務(wù)則將事務(wù)掛起

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

7、 propagation_never,表示當(dāng)前方法不能運行在事務(wù)當(dāng)中,如果有事務(wù)則會拋出異常---->Existing transaction found for transaction marked with propagation 'never'

事務(wù)的傳播行為NEVER

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

事務(wù)的傳播行為nested

事務(wù)的傳播行為級別簡單的演示完畢

作者:宜信技術(shù)學(xué)院,王巧敏

總結(jié)

以上是生活随笔為你收集整理的spring 事务隔离级别和传播行为_Spring事务的传播行为案例分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。