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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

javascript

Spring事务管理-传播行为-隔离级别

發(fā)布時(shí)間:2025/3/15 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring事务管理-传播行为-隔离级别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

事務(wù)是邏輯上的一組操作,這組操作要么全部成功,要么全部失敗。

事務(wù)的特性:ACID

原子性:事務(wù)是一個(gè)不可分割的工作單位,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生

一致性:事務(wù)前后數(shù)據(jù)的完整性約束保持一致

隔離性:多個(gè)用戶并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)時(shí),一個(gè)用戶的事務(wù)不會(huì)被其他用戶的事務(wù)干擾,數(shù)據(jù)相互隔離

持久性:事務(wù)提交之后對(duì)數(shù)據(jù)的改變是永久性的

?

Spring支持兩種事務(wù)管理:

?

1、編程式事務(wù)管理:自己編寫事務(wù)處理的類,進(jìn)行調(diào)用

?

Spring 對(duì)事物的編程式管理有基于底層 API 的編程式管理和基于 TransactionTemplate 的編程式事務(wù)管理兩種方式。

?

2、聲明式事務(wù)管理(基于AOP思想實(shí)現(xiàn))

?

基于TransactionProxyFactoryBean的方式

?

基于AspectJ的XML的方式

?

基于注解方式(常用)@Transactional

?

Spring編程式事務(wù)管理的三個(gè)主要接口:

PlatformTransactionManager(事務(wù)管理器)

TransactionDefinition(事務(wù)定義信息:傳播行為、隔離級(jí)別、超時(shí)、只讀)

TransactionStatus事務(wù)具體運(yùn)行狀態(tài)

根據(jù)不同的平臺(tái)選擇相應(yīng)的事務(wù)管理器(如JDBC選擇DataSourceManager)

臟讀:讀到其他事務(wù)修改數(shù)據(jù)后未提交的值

不可重復(fù)讀(在于更新和刪除)

幻讀(在于插入)

事務(wù)的傳播行為:解決業(yè)務(wù)層方法之間的相互調(diào)用問(wèn)題

簡(jiǎn)潔秒速:

其中spring七個(gè)事物傳播屬性:
 PROPAGATION_REQUIRED -- 支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),就新建一個(gè)事務(wù)。這是最常見(jiàn)的選擇。
 PROPAGATION_SUPPORTS -- 支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),就以非事務(wù)方式執(zhí)行。
 PROPAGATION_MANDATORY -- 支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),就拋出異常。
 PROPAGATION_REQUIRES_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ù),

則進(jìn)行與PROPAGATION_REQUIRED類似的操作。?



事務(wù)超時(shí)

為了使應(yīng)用程序很好地運(yùn)行,事務(wù)不能運(yùn)行太長(zhǎng)的時(shí)間。因?yàn)槭聞?wù)可能涉及對(duì)后端數(shù)據(jù)庫(kù)的鎖定,所以長(zhǎng)時(shí)間的事務(wù)會(huì)不必要的占用數(shù)據(jù)庫(kù)資源。事務(wù)超時(shí)就是事務(wù)的一個(gè)定時(shí)器,在特定時(shí)間內(nèi)事務(wù)如果沒(méi)有執(zhí)行完畢,那么就會(huì)自動(dòng)回滾,而不是一直等待其結(jié)束。

?

隔離級(jí)別

?

五個(gè)隔離級(jí)別:
ISOLATION_DEFAULT 這是一個(gè)PlatfromTransactionManager默認(rèn)的隔離級(jí)別,使用數(shù)據(jù)庫(kù)默認(rèn)的事務(wù)隔離級(jí)別.
另外四個(gè)與JDBC的隔離級(jí)別相對(duì)應(yīng);
ISOLATION_READ_UNCOMMITTED 這是事務(wù)最低的隔離級(jí)別,它充許別外一個(gè)事務(wù)可以看到這個(gè)事務(wù)未提交的數(shù)據(jù)。
這種隔離級(jí)別會(huì)產(chǎn)生臟讀,不可重復(fù)讀和幻像讀。

?

ISOLATION_READ_COMMITTED 保證一個(gè)事務(wù)修改的數(shù)據(jù)提交后才能被另外一個(gè)事務(wù)讀取。另外一個(gè)事務(wù)不能讀取
該事務(wù)未提交的數(shù)據(jù)。這種事務(wù)隔離級(jí)別可以避免臟讀出現(xiàn),但是可能會(huì)出現(xiàn)不可重復(fù)讀和幻像讀。

?

ISOLATION_REPEATABLE_READ 這種事務(wù)隔離級(jí)別可以防止臟讀,不可重復(fù)讀。但是可能出現(xiàn)幻像讀。它除了保證
一個(gè)事務(wù)不能讀取另一個(gè)事務(wù)未提交的數(shù)據(jù)外,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀)。

?

ISOLATION_SERIALIZABLE 這是花費(fèi)最高代價(jià)但是最可靠的事務(wù)隔離級(jí)別。事務(wù)被處理為順序執(zhí)行。除了防止臟讀,
不可重復(fù)讀外,還避免了幻像讀。

關(guān)鍵詞:
1)幻讀:事務(wù)1讀取記錄時(shí)事務(wù)2增加了記錄并提交,事務(wù)1再次讀取時(shí)可以看到事務(wù)2新增的記錄;
2)不可重復(fù)讀取:事務(wù)1讀取記錄時(shí),事務(wù)2更新了記錄并提交,事務(wù)1再次讀取時(shí)可以看到事務(wù)2修改后的記錄;
3)臟讀:事務(wù)1更新了記錄,但沒(méi)有提交,事務(wù)2讀取了更新后的行,然后事務(wù)T1回滾,現(xiàn)在T2讀取無(wú)效。

?

轉(zhuǎn)載于:https://www.cnblogs.com/cn-chy-com/p/10798604.html

總結(jié)

以上是生活随笔為你收集整理的Spring事务管理-传播行为-隔离级别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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