Spring 事務管理

2021-08-11 20:54:53 字數 3168 閱讀 5125

1.程式設計式事務

這種需要自己手動編寫事務**的控制方式已經嚴重過時了,因為每個執行dml語句的操作都要編寫乙份這樣的**,相當的麻煩,spring提供了乙個抽象層:plantformtransactionmanager,事務管理器。封裝了資料庫事務幾個方法,

commit、rollback、gettransaction。想在spring平台使用事務,就必須提供乙個

plantformtransactionmanager的子類,spring有乙個實現類:datasourcetransactionmanager。

2.spring事務配置

spring的事務控制是基於aop程式設計思想上實現的,配置檔案中需要的schema:

有tx包的地方也要有aop包。

a) 基本配置步驟:

1.首先宣告乙個datasource,給事務管理器控制這個datasource中的事務

2.宣告乙個spring的事務管理器:

3.定義通知

意義:通知的概念知道aop程式設計的都知道,不多bb ,資料庫事務的前置後置通知的**spring是 已經封裝好了的,直接指定就ok了。transaction-manager預設值是transactionmanager,如果在宣告管理器bean的時候id為transactionmanager,那麼在這裡是

不需要手動指定的,若不是,則手動指定 transaction-manager無論是獲取連線、關閉自動提交、等前置通知,還是異常回滾的異常通知、 業務** 執行完後提交事務的後置通知,spring都幫我們把相關的邏輯封裝好了, 只需要專注自己的業務邏輯即可。

name:

用於指定需要事務支援的方法,update*指的是update開頭的所有方法,以此類推。

propagation(傳播級別):

required:如果父方法沒有事務就建立乙個事務,如果有就使用當前事務。

required_new:無論父方法有沒有事務,都建立乙個新的

supports: 如果父方法沒有事務則使用jdbc的事務(自動提交),否則使用父方法的事務

not_supports:無論父方法有沒有事務,都是用jdbc的事務(掛起父方法的事務)。

mandatory:如果方法沒有執行在spring事務中就丟擲異常,必須在事務環境下執行

never:父方法不能存在事務,有事務就丟擲異常

4.切點關聯

關聯到上方定義的通知即可:

b) 設定回滾事務屬性:

spring事務管理中異常回滾預設情況下只對runtimeexception有效,非執行時異常是不會回滾的。不過<

tx:method>標籤中有兩個屬性可以指定遇到哪種型別的異常時回滾資料:

rollback - for:指定會自動回滾的非執行時異常,io異常、反射異常、sql異常等等。

no - rollback - for:指定不會回滾的執行時異常,空指標、下標越界等等。

事務的回滾規則可以通過@transactional註解或者配置檔案設定:

1.註解:通過rollbackfor 和 norollbackfor 屬性來定義。

這兩個屬性被宣告為 class 型別的, 因此可以為這兩個屬性指定多個異常類:

在 spring 2.x 事務通知中, 可以在

元素中指定回滾規則,如果有不止一種異常, 用逗號分隔:

c) 超時和唯讀屬性

由於事務可以在行和表上獲得鎖,因此長事務會占用資源,並對整體效能產生影響.,

如果乙個事務只讀取資料但不做修改,資料庫引擎可以對這個事務進行優化:

超時事務屬性:

事務在強制回滾之前可以保持多久,這樣可以防止長期執行的事務占用資源

唯讀事務屬性:表示這個事務只讀取資料但不更新資料,這樣可以幫助資料庫引擎優化事務

超時和唯讀屬性可以在 @transactional 註解中定義.超時屬性以秒為單位來計算:

在 spring 2.x 事務通知中,超時和唯讀屬性可以在元素中進行指定:

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