spring 事務管理

2021-08-30 09:52:04 字數 2181 閱讀 4860

一、spring的事務管理:spring提供了針對不同持久化機制的事務管理器。(aop中的切面類,定義了很多通知)

如:hibernate有org.springframework.orm.hibernate3.hibernatetransactionmanager

二、事務的引數:

1. 事務的傳播行為:

a) propagation_required:當前方法必須在乙個事務中執行。如果乙個事務正在執行,該方法將會在那個事務中執行。否則就要開始乙個新事務。spring的transactiondefinition的預設傳播行為。

b) propagation_supports:當前方法不需要事務性上下文。如果有乙個事務正在進行,它也可以在這個事務裡執行。

c) propagation_mandatory:當前方法必須在乙個事務中執行。如果有乙個事務正在進行,該方法將會在那個事務中執行。如果沒有乙個活動的事務,則丟擲異常。

d) propagation_requires_new:當前方法必須在它自己的事務裡執行。總是開啟乙個新的事務,如果有乙個事務正在執行,則將在這個方法的執行期間被掛起。

e) propagation_not_supported:當前方法總是非事務地執行。如果有乙個事務正在執行,它將在這個方法的執行期間被掛起。

f) propagation_never:當前方法不能在乙個事務上下文中。如果有乙個事務正在執行,則丟擲異常。

g) propagation_nested:如果當前有一事務正在執行,則該方法執行在乙個巢狀式事務中。如果沒有活動事務, 則按ropagation_required 屬性執行。

2. 隔離級別:

a) isolation_default:使用資料庫預設的事務隔離級別。spring的platfromtransactionmanager的預設隔離級別.

b) isolation_read_uncommitted:它充許另乙個事務可以看到這個事務未提交的資料。隔離級別最低。這種隔離級別會產生髒讀,不可重複讀和幻讀。

c) isolation_read_committed: 保證乙個事務修改的資料提交後才能被另外乙個事務讀取。可能出現不可重複讀和幻讀。

d) isolation_repeatable_read: 這種事務隔離級別可以防止髒讀,不可重複讀。可能出現幻像讀。

e) isolation_serializable:事務被處理為順序執行。可以防止髒讀、不可重複讀、幻讀。隔離級別最高。

3. 唯讀狀態:唯讀事務只對後端資料庫執行讀操作,後端資料庫可以採用一些優化措施來提高效率。

4. 事務超時:指定事務在特定秒數後自動回滾,不必等它自己結束。事務超時預設是依賴於事務系統的,或者事務超時沒有被支援。

5. 回滾規則:定義哪些異常引起事務回滾,哪些不引起。

預設情況下只在出現runtimeexception才會回滾,而在出現受檢異常時不回滾。(跟ejb中的回滾行為一致)

你可以宣告乙個事務在出現特定的受檢異常時能回滾。也可以宣告乙個事務在出現特定的非受檢異常時不回滾。

三、宣告式事務管理

1. 配置spring提供的對應持久化技術的事務管理器。

2.配置事務引數(配置通知)

3. aop的配置:

4.基於註解的事務管理配置:

1) 配置事務管理器。

2) 啟用spring對事務註解的支援:

如果transaction-manager屬性引用的事務管理器識別符號為transactionmanager,則可省略這個屬性。即可寫成

3) 使用@transactional對相應的類或方法新增事務配置:事務引數的配置參看spring reference。

@transactional也可以新增在介面上,但不建議這麼做。因為介面上的註解是不能被子介面繼承的,容易引起誤解。

package com.beckham.daoimp; import org.hibernate.session; import org.hibernate.sessionfactory; import com.beckham.dao.persondao; import com.beckham.model.person; public class persondaoimp implements persondao public void setsessionfactory(sessionfactory sessionfactory) public void add(person person) catch (exception e) } }

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