怎麼使用Annotation進行宣告式事務管理

2021-10-06 10:28:18 字數 2012 閱讀 8686

前言:

spring對於各種各樣的orm框架(包括jdbc) 都可以它進行宣告式事務管理,以下講

解的是spring對hibernate的宣告式事務管理,也是用的最多的;

一.匯入命名空間並注入sessionfactory

在spring配置檔案中beans元素中:

xmlns:tx=""

xsi:schemalocation=」

2.注入sessionfactory;

二.配置hibernate事務管理器

"transactionmanager"     class=

"org.springframework.orm.hibernate3.hibernatetransactionmanager"

>

"sessionfactory"

>

"mysessionfactory"/>

注意:

(1)使用hibernatetransactionmanager類管理事務, 其實這個類就相當於乙個

aspect(切面類),運用了aop原理;

(2)這是作為公共使用的事務管理器bean。這個會事先配置好,不需要各個模組各

自去配(也就是有多個spring配置檔案時);

(3)hibernatetransactionmanager這個類怎麼管理事務呢?這裡就使用了

sessionfactory,從sessionfactory中獲取連線,所以這裡需要需要注入乙個

sessionfactory;

三. 增加annotation驅動的transaction管理:

注意:transaction-manager屬性需要指定乙個transactionmanager(也就是事務管理器), 對於hibernate的事務管理你需要指定hibernate事務管理器;

四.關於@transactional註解的使用:

前言:(1)如果你需要在乙個方法中增加事務,這時你就可以在這個方法上新增@transactional

註解,它會自動在方法執行前與方法執行後新增關於事務的業務邏輯(也就是

@transactional使用了aop程式設計模式);

(2)在spring預設情況下,如果捕捉到的或則丟擲的是乙個runtimeexception 會自 動回滾事務;

(3)其實hibernate在執行期間丟擲的異常均為runtimeexception

好處:在spring中對hibernate進行事務管理,可以把我們的重點放在業務邏輯上,而 不必在關注try…catch…finally (發生異常時對事務的操作);

1.@transactional註解的配置:

屬性:1)propagation:

在spring為事務的傳播性(也就是事務的產生過程), 預設值為

propagation.required;

型別:列舉型別propagation;

propagation列舉型別中共有5個取值:

2.事務的傳播行為

1).requierd

如果有事務那麼加入事務,沒有的話新建乙個

2).not_supported

不開啟事務

3).requires_new

不管是否存在事務,都建立乙個新的事務,原來的掛起,新的執行完,繼續執行老事務

4).mandatory

必須在乙個已有的事務中執行,否則丟擲異常

5).never

必須在乙個沒有的事務中執行,否則丟擲異常

6).supports

如果其他bean呼叫這個方法,在其他bean中宣告事務,那就用事務.如果其他bean沒有宣告事務那就不用事務

3.readonly:布林型別

如果取值為true,就是唯讀型事務,也就是在該事務中沒有insert、update、delete

操作;如果取值為false,就是讀寫型事務,也就是在該事務中就能讀又能寫;

注意:該屬性是做優化使用的;也防止我們在唯讀事務中,寫了更改操作;

新站怎麼進權重呢

1 建設之初,標題 關鍵字,必需要選精確了,一旦挑選好了,就容易不要再更新了,這樣對baidu優化欠好。在baidu沒有錄入之前假如你一直換標題什麼的,當心了baidu有能夠不會錄入。標題要盡量和關鍵字靠齊,而且要注意關鍵字在標題中的方位以及在整個網頁中的散布密度,站內的關鍵字密度就不多說了3 到8...

使用Annotation註解法建立物件 常用註解

使用xml宣告法建立物件時容易造成配置檔案中宣告的 過多,對後期 維護不利。可以使用spring中提供的annotation註解法來解決這個問題。配置 的作用是在指定的包中掃滿符合建立物件的類,如果某些類需要被spring例項化,則class類的上方必須使用 compent註解 配置檔案如下 注意下...

WPF使用IDataErrorInfo進行資料校驗

原文 wpf使用idataerrorinfo進行資料校驗 這篇部落格將介紹如何使用idataerrorinfo進行資料校驗。下面直接看例子。乙個customer類,兩個屬性 firstname,age class customer public intage 將customer類繼承idataerr...