前言:
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...