Spring6 Spring中的事務管理

2021-06-17 16:20:43 字數 1350 閱讀 5489

事物舉例

小明去買書,

當他買一本書時需要執行兩個操作

假設書的**是每本50元

一是從書的數量上減1

二是從小明的賬戶上減去50元

這兩個運算元的數量減一和賬戶上減去50元,是需要同時執行,它們是原子性,即不可分割,要麼同時成功提交,要麼同時失敗後回滾,不可能存在乙個成功執行,另乙個失敗回滾這種狀態

事物的總結

事物就是一系列動作,它們被當作單獨的乙個動作單元,這些動作要麼全部完成,要麼全部不起作用

事物的四個關鍵屬性(acid)

原子性(automicity):事物是乙個原子操作,有一系列動作組成,事物的原子性要求確保動作要麼全部完成要麼全部不起作用

一致性(consistency):一旦事物的所有動作完成,事物就會被提交,資料和資源就出於一種滿足業務規則的一致性狀態中

隔離性(isolation):可能有許多事物處理相同的資料,因此每個事物都應該與其他事物隔離開來,防止資料損害

永續性(durability):一旦事物完成,無論發生什麼系統錯誤,它的結果都不應該收到影響,通過事物的結果被寫到持久化存貯器中

配置宣告式事物

配置事物管理器

配置基於註解的事物管理

在需要事物管理的方法上,新增@trasction註解

前置通知:開啟事物

返回通知:提交通知

異常通知:回滾事物

tryfinally(

關閉事物

事物傳播屬性

當乙個事物方法被另乙個事物方法呼叫時,必須指定事物是如何傳播的。例如:事物可能在現有的事物中執行,也可能開啟乙個新的事物,並在自己的事物中執行

在spring中事物的傳播級別一共是6種,例如

事物的隔離界別

當同乙個應用程式或者或者不同的應用程式中的多個事物在同乙個資料集上發生併發執行操作時,可能會出現很多意外情況

併發事物所導致的問題可以分為一下三種型別:

髒讀:對於t1和t2兩個事物:t1杜去了被t2更新但並未提交的資料,之後,t2發生回滾,t1讀取的內容就是臨時而且無效的

不可重複讀:對於t1和t2兩個事物,t1讀取了乙個資料,t2對資料進行了更新,之後,t1再次對該資料進行讀取,得到的同乙個資料前後值就不同了

幻讀:對於t1和t2兩個事物,t1從乙個表中讀取了乙個字段,然後t2對改變增加了一行記錄資料,之後,t1對該錶再次進行讀取,表中的資料就會多出幾行

從理論上講,事物應該完全隔離,避免併發事物導致的問題,然後,那樣會對效能產生極大的影響,因為事物必須按照順序進行執行

在實際開發中,為了提高效能,事物經常會以較低的隔離級別執行

事物的隔離級別通過事物的隔離屬性進行

未檢查異常就是執行時異常

檢查異常就是編譯時異常

Spring複習筆記 Spring中的Bean

注意構造器例項化 最常用 靜態工廠方式例項化 例項工廠方式例項化 singleton 單例 始終使用的同乙個物件 預設 prototype 原型 每次都是乙個新的bean例項 request session globalsession websocket init method屬性 用於指定bean...

Spring框架總結(6)

springmvc spring提供的控制器 是表現層 控制層 的乙個目前最流行的mvc框架 採用非侵入式設計 與struts2相比,其效能更好 主要因為struts2處理請求是基於類 物件 的,而springmvc基於方法 springmvc的兩個控制器 前端控制器 由springmvc來提供di...

Spring學習(6)Spring註解開發

在spring4之後,要是用註解開發,必須保證aop的包匯入了 使用註解需要匯入context約束,增加註解的支援 指定要掃瞄的包,這個包下的註解就會生效 package com.zhao.pojo context component scan beans 1.bean 2.屬性如何注入 packa...