spring的事務管理

2021-04-21 23:42:56 字數 1991 閱讀 4727

spring宣告式事務讓我們從複雜的事務處理中得到解脫。使得我們再也無需要去處理獲得連線、關閉連線、事務提交和回滾等這些操作。再也無需要我們在與事務相關的方法中處理大量的try…catch…finally**

我們在使用spring宣告式事務時,有乙個非常重要的概念就是事務屬性。事務屬性通常由事務的傳播行為,事務的隔離級別,事務的超時值和事務唯讀標誌組成。我們在進行事務劃分時,需要進行事務定義,也就是配置事務的屬性。

spring 在transactiondefinition 介面中定義這些屬性,以供platfromtransactionmanager使用, platfromtransactionmanager是spring事務管理的核心介面。

spring提供了幾個關於事務處理的類:

1.transactiondefinition //事務屬性定義

2.transcationstatus //代表了當前的事務,可以提交,回滾。

3.platformtransactionmanager這個是spring提供的用於管理事務的基礎介面,其下有乙個實現的抽象類4.abstractplatformtransactionmanager,我們使用的事務管理類例如datasourcetransactionmanager等都是這個類的子類。 

在transactiondefinition介面中定義了四個不同的事務隔離級別:

1) isolation_default 這是乙個 platfromtransactionmanager預設的隔離級別,使用資料庫預設的事務隔離級別.另外四個與jdbc的隔離級別相對應 < br />

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

3) isolation_read_committed 保證乙個事務修改的資料提交後才能被另外乙個事務讀取。另外乙個事務不能讀取該事務未提交的資料。這種事務隔離級別可以避免髒讀出現,但是可能會出現不可重複讀和幻像讀。

4) isolation_repeatable_read 這種事務隔離級別可以防止髒讀,不可重複讀。但是可能出現幻像讀。它除了保證乙個事務不能讀取另乙個事務未提交的資料外,還保證了避免下面的情況產生(不可重複讀)

在transactiondefinition介面中定義了七個事務傳播行為:

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 屬性執行;

使用手動事務管理**:

transactiondefinition td = new transactiondefinition();

transactionstatus ts = transactionmanager.gettransaction(td);

trycatch(exception e)

使用spring提供的事務模板transactiontemplate:

void add()}} 

transactiontemplate也是為我們省去了部分事務提交、回滾**;定義事務模板時,需注入事務管理物件。

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