AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

Spring事務的傳播機制

來源: 責編: 時間:2023-10-30 09:07:11 290觀看
導讀我們都知道,在數據庫中有這事務的存在,但是更多的時候,我們還會被經常問到這個關于 Spring 中 事務的各種行為,又或者說是傳播機制,或者隔離級別等內容,那么面試的時候我們應該怎么去回答這個 Spring 事務的傳播機制以及隔

我們都知道,在數據庫中有這事務的存在,但是更多的時候,我們還會被經常問到這個關于 Spring 中 事務的各種行為,又或者說是傳播機制,或者隔離級別等內容,那么面試的時候我們應該怎么去回答這個 Spring 事務的傳播機制以及隔離級別呢?Kvm28資訊網——每日最新資訊28at.com

什么是 Spring 的事務

事務是邏輯處理原?性的保證?段,通過使?事務控制,可以極?的避免出現邏輯處理失敗導致的臟數 據等問題。Kvm28資訊網——每日最新資訊28at.com

事務最重要的兩個特性,是事務的傳播級別和數據隔離級別。傳播級別定義的是事務的控制范圍,事務 隔離級別定義的是事務在數據庫讀寫??的控制范圍。Kvm28資訊網——每日最新資訊28at.com

Spring事務傳播機制

PROPAGATION_REQUIRED

Spring默認的事務傳播級別,使?該級別的特點是,如果上下?中 已經存在事務,那么就加?到事務中執?,如果當前上下?中不存在事務,則新建事務執?。所以這個 級別通常能滿?處理?多數的業務場景。Kvm28資訊網——每日最新資訊28at.com

PROPAGATION_SUPPORTS

從字?意思就知道,supports,?持,該傳播級別的特點是,如果上下?存在事務,則?持事務加?事務,如果沒有事務,則使??事務的?式執?。所以說,并?所有的包在transactionTemplate.execute中的代碼都會有事務?持。這個通常是?來處理那些并?原?性的?核?業務邏輯操作。應?場景較少。Kvm28資訊網——每日最新資訊28at.com

PROPAGATION_MANDATORY

該級別的事務要求上下?中必須要存在事務,否則就會拋出異常!配置該?式的傳播級別是有效的控制上下?調?代碼遺漏添加事務控制的保證?段。?如?段代碼不能單獨被調?執?,但是?旦被調?,就必須有事務包含的情況,就可以使?這個傳播級別。Kvm28資訊網——每日最新資訊28at.com

PROPAGATION_REQUIRES_NEW

從字?即可知道,new,每次都要?個新事務,該傳播級別的特點是,每次都會新建?個事務,并且同時將上下?中的事務掛起,執?當前新建事務完成以后,上下?事務恢復再執?。Kvm28資訊網——每日最新資訊28at.com

這是?個很有?的傳播級別,舉?個應?場景:現在有?個發送100個紅包的操作,在發送之前,要做 ?些系統的初始化、驗證、數據記錄操作,然后發送100封紅包,然后再記錄發送?志,發送?志要求 100%的準確,如果?志不準確,那么整個?事務邏輯需要回滾。Kvm28資訊網——每日最新資訊28at.com

怎么處理整個業務需求呢?就是通過這個PROPAGATION_REQUIRES_NEW 級別的事務傳播控制就可以 完成。發送紅包的?事務不會直接影響到?事務的提交和回滾。Kvm28資訊網——每日最新資訊28at.com

PROPAGATION_NOT_SUPPORTED

這個也可以從字?得知,not supported ,不?持,當前級別的特點就是上下?中存在事務,則掛起事務,執?當前邏輯,結束后恢復上下?的事務。Kvm28資訊網——每日最新資訊28at.com

這個級別有什么好處?Kvm28資訊網——每日最新資訊28at.com

可以幫助你將事務極可能的縮?。我們知道?個事務越?,它存在的?險也就越多。所以在處理事務的過程中,要保證盡可能的縮?范圍。?如?段代碼,是每次邏輯操作都必須調?的,?如循環1000次的某個?核?業務邏輯操作。這樣的代碼如果包在事務中,勢必造成事務太?,導致出現?些難以考慮周全的異常情況。所以這個事務這個級別的傳播級別就派上?場了。Kvm28資訊網——每日最新資訊28at.com

PROPAGATION_NEVER

該事務更嚴格,上??個事務傳播級別只是不?持?已,有事務就掛 起,?PROPAGATION_NEVER傳播級別要求上下?中不能存在事務,?旦有事務,就拋出runtime異 常,強制停?執?!這個級別上輩?跟事務有仇。Kvm28資訊網——每日最新資訊28at.com

PROPAGATION_NESTED

字?也可知道,nested,嵌套級別事務。該傳播級別特征是,如果上 下?中存在事務,則嵌套事務執?,如果不存在事務,則新建事務Kvm28資訊網——每日最新資訊28at.com

Spring 事務隔離級別

Serializable

最嚴格的級別,事務串?執?,資源消耗最?;Kvm28資訊網——每日最新資訊28at.com

REPEATABLE READ

保證了?個事務不會修改已經由另?個事務讀取但未提交(回滾)的數據。 避免了“臟讀取”和“不可重復讀取”的情況,但是帶來了更多的性能損失。Kvm28資訊網——每日最新資訊28at.com

READ COMMITTED

?多數主流數據庫的默認事務等級,保證了?個事務不會讀到另?個并?事務 已修改但未提交的數據,避免了“臟讀取”。該級別適?于?多數系統。Kvm28資訊網——每日最新資訊28at.com

Read Uncommitted

保證了讀取過程中不會讀取到?法數據Kvm28資訊網——每日最新資訊28at.com

我們來舉個事務傳播的例子:Kvm28資訊網——每日最新資訊28at.com

假設有一個方法childTest(),它是一個事務方法,使用了PROPAGATION_REQUIRED事務傳播選項。如果在一個事務中調用這個方法,那么它會在同一個事務中執行。Kvm28資訊網——每日最新資訊28at.com

現在假設有一個方法mainTest(),它調用了childTest()方法。如果在mainTest()方法中沒有顯式地聲明事務,而childTest()方法中聲明了事務,那么childTest()方法將在一個新的事務中執行,這個新的事務不會影響mainTest()方法的執行。Kvm28資訊網——每日最新資訊28at.com

但是,如果mainTest()方法也使用了事務傳播選項,例如PROPAGATION_REQUIRED,那么在執行childTest()方法時,它的事務會隱式地與mainTest()方法的事務關聯。這意味著如果childTest()方法的事務成功,則mainTest()方法的事務也會成功;如果childTest()方法的事務失敗,則mainTest()方法的事務也會失敗。Kvm28資訊網——每日最新資訊28at.com

關于 Spring 的事務,你了解了么?Kvm28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-15748-0.htmlSpring事務的傳播機制

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Envoy 基于文件和 API 的動態配置方式

下一篇: 為什么 IT 項目仍然失敗

標簽:
  • 熱門焦點
Top