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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

事务知识

發(fā)布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 事务知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

事務(wù)管理是企業(yè)級應(yīng)用程序開發(fā)中必不可少的技術(shù),用來確保一組操作的時候?????? 數(shù)據(jù)的完整性和一致性

技術(shù)委員? 沒錢了?? 班長----2000????? 班長? ---?? 賺錢???????? (1:從班長的卡里扣錢??? 2:給技術(shù)組長的卡里增錢)
?????????2000?????????????? 10
?????????

例如去銀行存款轉(zhuǎn)賬張三給李四轉(zhuǎn)錢,這個過程就是我們所說的一個事物

一個完整的事物需要滿足以下的特性
?原子性(atomicity):事務(wù)的原子性確保動作要么全部完成,要么完全不起作用
?一致性(consistency):一旦所有事務(wù)動作完成,事務(wù)就被提交。也就是說要么都成功,要么都不成功
?隔離性(isolation):多個事物同時處理一個數(shù)據(jù)的時候,每個事物都應(yīng)該與其他事務(wù)隔離開來,防止數(shù)據(jù)損壞
?持久性(durability):一旦事務(wù)完成,無論發(fā)生什么系統(tǒng)錯誤,它的結(jié)果都不應(yīng)該受到影響。應(yīng)該被持久化到數(shù)據(jù)庫中


這就是事務(wù)的四個關(guān)鍵屬性(ACID)

?

Spring既支持編程式事務(wù)管理,也支持聲明式的事務(wù)管理

1:編程式事務(wù)管理:將事務(wù)管理代碼嵌入到業(yè)務(wù)方法中來控制事務(wù)的提交和回滾,在編程式事務(wù)中,必須在每個業(yè)務(wù)操作中包含額外的事務(wù)管理代碼

2:聲明式事務(wù)管理:大多數(shù)情況下比編程式事務(wù)管理更好用。它將事務(wù)管理代碼從業(yè)務(wù)方法中分離出來,以聲明的方式來實現(xiàn)事務(wù)管理。事務(wù)管理作為一種橫切關(guān)注點,可以通過AOP方法模塊化。Spring通過Spring AOP框架支持聲明式事務(wù)管理。

?

我們需要首先來解釋兩個比較專業(yè)的概念,事物的傳播行為和事物的隔離特性

spring事務(wù)的傳播行為說的是當一個方法調(diào)用另一個方法時,事務(wù)該如何操作。

spring中常用的的事物類型有著些
service
public int addUser(){
?userDao.addUser();
}
1:REQUERED--------------PROPAGATION_REQUIRED
?支持當前事務(wù),如果沒有事物則新建事物----最常用
2:SUPPORTS
?支持當前事務(wù),如果沒有事物,則以非事物的模式進行
3:MANDATORY
?支持當前事務(wù),如果當前沒有事物,則拋出異常
4:REQUIRES-NEW
?新建一個事物,如果當前存在事物,則將當前事務(wù)掛起
5:NOT-SUPPORTED
?以非事物的方式進行,如果當前有事物則將事物掛起
6:NEVER
?以非事物的方式進行,如果有事物則掛起
7:NESTED
?如果當前存在事物,則嵌套在事物內(nèi)進行,如果當前沒有事物,則和1的方式一樣


解釋幾個非常重要的概念
1:臟讀就是指當一個事務(wù)正在訪問數(shù)據(jù),并且對數(shù)據(jù)進行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中,這時,另外一個事務(wù)也訪問 這個數(shù)據(jù),然后使用了這個數(shù)據(jù)。
?張三原來有3000塊錢,又存款2000(這個時間比較長)。同一時間,張三老婆看到的張三卡里的錢還是只有3000,取款了2800,張三悲劇了,著就是臟讀

2. 不可重復(fù)讀 :是指在一個事務(wù)內(nèi),多次讀同一數(shù)據(jù)。在這個事務(wù)還沒有結(jié)束時,另外一個事務(wù)也訪問該同一數(shù)據(jù)---并且修改。那么,在第一個事務(wù)中的兩 次讀數(shù)據(jù)之間,由于第二個事務(wù)的修改,那么第一個事務(wù)兩次讀到的的數(shù)據(jù)可能是不一樣的
3. 幻讀 : 是指當事務(wù)不是獨立執(zhí)行時發(fā)生的一種現(xiàn)象,例如第一個事務(wù)對一個表中的數(shù)據(jù)進行了修改,這種修改涉及到表中的全部數(shù)據(jù)行。 同時,第二個事務(wù)也修改這個表中的數(shù)據(jù),這種修改是向表中插入一行新數(shù)據(jù)。那么,以后就會發(fā)生操作第一個事務(wù)的用戶發(fā)現(xiàn)表中還有沒有修改的數(shù)據(jù)行,就好象 發(fā)生了幻覺一樣

?

spring的事務(wù)隔離級別
ISOLATION_DEFAULT:使用數(shù)據(jù)庫默認的隔離級別。
?
ISOLATION_READ_UNCOMMITTED:允許讀取改變了的還未提交的數(shù)據(jù),可能導(dǎo)致臟讀、不可重復(fù)讀和幻讀。
??是事務(wù)最低的隔離級別,它充許令外一個事務(wù)可以看到這個事務(wù)未提交的數(shù)據(jù)。

ISOLATION_READ_COMMITTED:允許并發(fā)事務(wù)提交之后讀取,可以避免臟讀,可能導(dǎo)致重復(fù)讀和幻讀。
?? 保證一個事務(wù)修改的數(shù)據(jù)提交后才能被另外一個事務(wù)讀取。另外一個事務(wù)不能讀取該事務(wù)未提交的數(shù)據(jù)

ISOLATION_REPEATABLE_READ:對相同字段的多次讀取結(jié)果一致,可導(dǎo)致幻讀。
??? 它除了保證一個事務(wù)不能讀取另一個事務(wù)未提交的數(shù)據(jù)外,還保證了避免下面的情況產(chǎn)生(不可重復(fù)讀)。

ISOLATION_SERIALIZABLE:完全服從ACID的原則,確保不發(fā)生臟讀、不可重復(fù)讀和幻讀。
? 這是花費最高代價但是最可靠的事務(wù)隔離級別。事務(wù)被處理為順序執(zhí)行。除了防止臟讀,不可重復(fù)讀外,還避免了幻像讀。

?

轉(zhuǎn)載于:https://www.cnblogs.com/wo541362927/p/5839524.html

總結(jié)

以上是生活随笔為你收集整理的事务知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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