Spring事務管理

2021-08-28 17:07:06 字數 1882 閱讀 4837

事務就是對資料庫的一系列操作(如對資料庫的增刪改查),將這些操作看成乙個整體,要麼全部成功,要麼全部失敗。不存在部分成功,部分失敗這種情況。

1、原子性(atomic):表示組成乙個事務的多個資料庫操作是乙個不可分割的原子單元,只有所有的操作執行成功,整個事務才提交,事務中任何乙個資料庫操作失敗,已經執行的任何操作都必須撤銷,讓資料庫返回初始狀態。(事務回滾)

2、一致性(consistency):事務操作成功之後,資料庫所處的狀態和他的業務規則是一致的,即資料不會被破壞。如a轉賬50元到b賬戶,無論成功與否,a、b存款總額不變。

3、隔離性(isolation):在併發資料操作時,不同的事務擁有各自的資料空間,他們的操作不會對對方產生干擾。準確地說,並非要求做到完全無干擾,資料庫規定了很多種事務隔離級別,不同隔離級別對應不同的干擾程度,隔離級別越高,資料一致性越好,但併發性越弱。

4、永續性(durability):一旦事務提交成功後,事務中對所有的資料操作都必須被持久化到資料庫中,即使提交事務後,資料庫馬上崩潰,在資料庫重啟時,也必須能保證能夠通過某種機制恢復資料。(重執行日誌)

spring中規定了7種:

事務傳播行為型別事務傳播行為型別說明

propagation_required(預設傳播行為)如果當前沒有事務,就新建乙個事務,如果已經存在乙個事務,就加入到這個事務中。

propagation_requires_new表示當前方法必須在事務中執行,並新建當前方法的事務。如果呼叫的方法存在事務,就把當前事務掛起

propagation_supports支援當前事務,如果當前沒有事務,就以非事務方式執行

propagation_not_supported以非事務方式執行操作,如果當前存在事務,就把當前事務掛起

propagation_mandatory使用當前事務,如果當前事務不存在,就丟擲異常

propagation_never以非事務方式執行,如果當前存在事務,就丟擲異常

propagation_nested如果當前存在事務,則在巢狀事務內執行;如果不存在,則執行與propagation_required類似的操作

(1)髒讀(dirty read):a事務讀取b事務尚未提交的更改的資料,並在這個資料的基礎上進行操作。如果b事務回滾,那麼a事務的讀到的資料是無效的、不被承認的。

(2)不可重複讀(unrepeatable read):a事務讀取了進行兩次或以上查詢操作,b事務在a查詢期間進行資料操作,導致每次讀取到的資料不同。

(3)幻讀(phantom read):a事務讀取b事務提交的新增資料。一般發生在資料統計中。

Spring事務管理

spring是ssh中的管理員,負責管理其它框架,協調各個部分的工作。今天一起學習一下spring的事務管理。spring的事務管理分為宣告式跟程式設計式。宣告式就是在spring的配置檔案中進行相關配置 程式設計式就是用註解的方式寫到 裡。下面先說宣告式 spring配置檔案中關於事務配置總是由三...

spring事務管理

一 xml配置事務 二 註解的方式配置事務 bean id txmanaager class org.springframework.orm.hibernate3.hibernatetransactionmanager property name sessionfactory ref session...

spring 事務管理

和資料庫打交道的碼農都知道事務,事務有4大特徵,分別是原子性,一致性,隔離性,永續性。而spring 對事物提供了良好的支援,和api,通過簡單的配置,則可以減低程式設計師重複的操作。1.原子性 原子性指的是乙個事務內的所有操作要麼全部應用到資料庫,要麼取消對資料庫的操作。2.一致性 一致性和原子性...