《精通Spring4 x》事務管理

2021-09-29 07:41:35 字數 2542 閱讀 3405

一、資料併發問題

當資料庫中相同資料被多個事務同時訪問時,就可能會出現併發問題。這些問題可以歸結為5類,包括三類資料讀問題,以及2類資料更新問題。

1、髒讀

a事務讀取b事務尚未提交的更改資料,並在這個資料的基礎上進行操作。

2、不可重複讀

不可重複讀是指a事務讀取了b事務已經提交的更改資料。

3、幻像讀

幻想讀是指a事務讀取b事務已經提交的新增資料。

不可重複讀和幻像讀的區別為更新和插入

4、第一類丟失更新

a事務撤銷時,把已經提交的b事務的更新資料覆蓋了。

5、第二類丟失更新

a事務覆蓋b事務已經提交的資料

二、資料庫的鎖機制

資料庫通過鎖機制解決併發訪問的問題,不同的資料庫在實現細節上存在差別,但基本原理是一樣的。

按鎖定的物件不同,一般可以分為行鎖定和列鎖定。按照鎖定關係看,可以分為共享鎖和獨佔鎖。共享鎖定會防止獨佔鎖定,但會允許其他共享鎖定。

以下為oracle資料庫常用的幾種鎖定。

行共享鎖定:一般通過select for update語句隱士的獲取行共享鎖定。行共享鎖定並不防止對資料進行更改操作,但是可以防止其他會話獲取獨占性資料表鎖定。允許進行多個併發的行共享和行獨佔鎖定,還允許進行資料表的或者採用共享行獨佔鎖定。

行獨佔鎖定:通過一條insert、update、或delete語句隱士獲取。這種鎖定可以防止其他會話獲取乙個共享鎖定,共享行獨佔鎖定或獨佔鎖定

表共享鎖定:通過lock table in share mode語句顯示獲得,這種鎖定可以防止其他會話獲取行獨佔鎖定,或者防止其他表共享剛獨佔鎖定或表獨佔鎖定。但他允許在表中擁有多個行共享和表共享鎖定。

表共享行獨佔鎖定:通過lock table in share row exclusive mode語句顯示獲得。這種鎖定可以防止其他會話獲取乙個表共享、行獨佔或者表獨佔鎖定,但允許其他行共享鎖定

表獨佔鎖定:通過lock table in exclusive mode語句顯示獲得。這種鎖定可以防止其他會話對該錶的任何其他鎖定

三、事務的隔離級別

三、spring對事務管理的支援

事務的傳播行為

使用xml配置宣告式事務

< prop >內的值為事務屬性資訊,其配置格式如圖。

·事務的隔離級別如下

在事務執行過程中發生異常,事務可以被宣告為回滾或繼續提交。當顯示配置時,可以指定為正負號,正號時將提交,負號將會回滾。

基於aop/tx命名空間的配置

以下為tx:method元素屬性表

使用註解配置事務

使用@transactional註解,需要在xml檔案中進行如下配置:

還具有以下屬性,proxy-target-class,如果為true,則使用建立子類來**業務類,如果為false,則使用基於介面**。

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.一致性 一致性和原子性...