使用XML進行宣告式事務管理

2021-06-14 03:43:42 字數 2060 閱讀 5884

前言:

spring對於各種各樣的

orm框架(包括

jdbc) 

都可以它進行宣告式事務管理,以下講  

解的是spring

對hibernate

的宣告式事務管理,也是用的最多的;

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

1. 在

spring

配置檔案中

beans

元素中:

xmlns:tx=""

xsi:schemalocation=」

/spring-tx-2.5.xsd

」2.注入

sessionfactory;    

二.配置hibernate

事務管理器 1.

class="org.springframework.orm.hibernate3.hibernatetransactionmanager">

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

aspect(切面類

),運用了

aop原理;

(2)這是作為公共使用的事務管理器

bean

。這個會事先配置好,不需要各個模組各

自去配(也就是有多個spring

配置檔案時);

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

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

sessionfactory;

三.通過

建立事務處理通知:

四.配置使用事務通知的切入點:

expression="execution(public * com.service..*.*(..))" />

五.將事務通知與通知切入點組合:

advisor代表

spring

中的aspec,

但是,與正常的

aspect不同,

advisor通常只持有乙個

pointcut

和乙個advice

。所以,

我們可以

認為advisor

是一種特殊的

aspect;

:將事務通知與切入點組合

完整**配置如下:

講解::

advice>

標籤表示乙個事務的

advice(通知)

,它需要設定乙個

transactioinmanager,  這裡引用了txmanager,在內部使用

來設定相關屬性;

每一 個:

method>

表示設定乙個需要納入事務的方法,這裡支援組配置,

在:attributes>

內部可以有多個

:method>,:

method> 

中可以配置

propagation(事務傳播性設定)、

isolation(

事務的隔離級別)、

timeout(事務超時)、   

read-only(讀寫型事務後者唯讀型事務)等等

.....

結合乙個

來配置事務,通過這裡的

中的將事 

務通知(advice)

和通知切入點

(pointcut)

組合;

總結:1.使用

xml方式還是使用

annotation

方式來進行宣告宣告式事務管理?

雖然使用annotation

的方式比較簡單,但是如果需要新增事務管理的方法比較多時,  這時候就會顯得力不從心了,需要配置很多個

@transactional;

而使用xml

的方式可以通過萬用字元的方式,一次為多個方法新增事務管理;

所以,大多數的情況下,都是使用xml

的方式進行宣告式事務管理;

宣告式事務管理

基於spring的aop的宣告式事務管理 這種管理方式只需要保證事務層方法命名有一定的規律,通過配置即可實現。基於 transational的宣告式事務管理 這種方式的事務管理是基於spring註解實現的,只需要在需要管理的事務層上加上該註解即可。配置註解自動掃瞄 新增註解 transactiona...

Spring事務管理 宣告式事務管理的使用

下面是步驟 圖是引用的,侵刪 接下去是我寫的 xmlns xmlns xsi xmlns context xmlns aop xmlns tx xsi schemalocation spring beans.xsd spring context.xsd spring tx.xsd spring ao...

Spring宣告式事務管理

使用事務的目的是將整個業務的邏輯處理置於同乙個事務中,方便對整個業務進行管理,如業務的事務回滾 在編寫 時,為了將乙個業務的核心邏輯處理放入事務中,有時會這樣寫 session session sf.opensession 開啟乙個session session.gettransaction beg...