一、資料併發問題
當資料庫中相同資料被多個事務同時訪問時,就可能會出現併發問題。這些問題可以歸結為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.一致性 一致性和原子性...