spring 事務管理

2021-08-31 23:11:50 字數 1448 閱讀 7214

事務 包括acid 四個性質 詳見我前面的文章 「acid-事務的原子性、一致性、隔離性、永續性」

包含乙個或多個引數:傳播行為,隔離級別,唯讀提示、事務超時間隔

一  傳播行為: 新的事務是否要被啟用或掛起,方法是否在事務中

1. propagation_required: 如果存在乙個事務,則支援當前事務。如果沒有事務則開

啟2. propagation_supports: 如果存在乙個事務,支援當前事務。如果沒有事務,則非

事務的執行

3. propagation_mandatory: 該方法必須執行在乙個事務內。如果沒有乙個活動的事務

,則丟擲異常。

4. propagation_requires_new: 總是開啟乙個新的事務。如果乙個事務已經存在,則

將這個存在的事務掛起。

5. propagation_not_supported: 總是非事務地執行,並掛起任何存在的事務。

6. propagation_never: 總是非事務地執行,如果存在乙個活動事務,則丟擲異常

7. propagation_nested:如果乙個活動的事務存在,則執行在乙個巢狀的事務中. 如

果沒有活動事務,

則按transactiondefinition.propagation_required 屬性執行

二  隔離級別

一般用第5種隔離方式

事務執行的時候,可能存在 髒讀 不可重複讀 和 幻讀等情況。因此事務之間有五種隔離:

1. isolation_default: 這是乙個platfromtransactionmanager預設的隔離級別,使

用資料庫預設的事務隔離級別.

另外四個與jdbc的隔離級別相對應

2. isolation_read_uncommitted: 這是事務最低的隔離級別,它充許令外乙個事務可

以看到這個事務未提交的資料。

這種隔離級別會產生髒讀,不可重複讀和幻像讀。

3. isolation_read_committed: 允許事務已經提交後讀取,可防止髒讀,但不可

防止不可重複讀和幻像讀

4. isolation_repeatable_read:對相同欄位的多次讀取的結果是一致的 這種事務隔

離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。

它除了保證乙個事務不能讀取另乙個事務未提交的資料外,還保證了避免下面的

情況產生(不可重複讀)。

5. isolation_serializable 完全符合acid的級別,事務順序執行。

三 唯讀 利用事務的唯讀特性,將可能啟動新事務的傳播行為標為唯讀才有意義,即傳播行為如下:

propagation_required

propagation_requires_new

propagation_nested

四  事務超時間隔  啟用新事務的 設定啟動超時 才有意義 即傳播行為同三

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