国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
在Spring中集成Hibernate事務(wù)
 
作者:佚名    文章來源:不詳    點(diǎn)擊數(shù): 5    更新時(shí)間:2006-4-29    
1 2 3 4 下一頁
本文試圖解釋如何使用Spring來集成組件(包括組件的事務(wù)關(guān)系)。在J2EE應(yīng)用程序中,連接到單個(gè)存儲數(shù)據(jù)沒有什么困難。但是一旦要求集成企業(yè)級組件的時(shí)候,情況就復(fù)雜了。一個(gè)組件一般會受到一個(gè)或多個(gè)存儲數(shù)據(jù)的支持,因此當(dāng)我們提到集成一個(gè)或多個(gè)組件的時(shí)候,我們就認(rèn)為需要跨越多個(gè)組件、維護(hù)多個(gè)數(shù)據(jù)存儲中的原子操作。J2EE服務(wù)器為這些組件提供了一個(gè)容器,這個(gè)容器可以管理這些事務(wù)性原子操作和跨組件的隔離。如果我們沒有使用J2EE服務(wù)器,Spring可以幫助我們。Spring在集成組件服務(wù)和它們相關(guān)的事務(wù)關(guān)系的時(shí)候,是基于控制倒置(Inversion of Control)的。
集成(Assembling)組件事務(wù)
假設(shè)在我們的企業(yè)組件庫中,已經(jīng)擁有了一個(gè)審計(jì)(audit)組件,客戶端可以調(diào)用它的服務(wù)方法。后來,當(dāng)我們希望建立一個(gè)訂單處理系統(tǒng)的時(shí)候,我們發(fā)現(xiàn)了一個(gè)設(shè)計(jì)需求:OrderListManager組件服務(wù)也需要審計(jì)組件服務(wù)。OrderListManager建立和管理訂單,因此所有的OrderListManager服務(wù)都有自己的事務(wù)屬性。當(dāng)我們在OrderListManager服務(wù)內(nèi)部調(diào)用審計(jì)組件的時(shí)候,會把OrderListManager服務(wù)的事務(wù)關(guān)系(context)傳遞到審計(jì)服務(wù)中。也許在未來某個(gè)時(shí)候,某個(gè)新的業(yè)務(wù)服務(wù)組件也需要審計(jì)組件服務(wù),但是該審計(jì)服務(wù)將會在一個(gè)完全不同的事務(wù)關(guān)系中被調(diào)用。其實(shí)際結(jié)果是,雖然審計(jì)組件的功能仍然沒有變化,但是它可以與其它的業(yè)務(wù)服務(wù)功能組合使用,使用混合和匹配(mix-and-match)的事務(wù)屬性來提供不同的運(yùn)行時(shí)(run time)事務(wù)行為。
圖1顯示了兩個(gè)相互獨(dú)立的調(diào)用關(guān)系流。在流1中,如果客戶端擁有TX關(guān)系,OrderListManager要么參與它,要么啟動(dòng)一個(gè)新的TX,這依賴于Client是否在某個(gè)TX中,以及為OrderListManager方法提供了什么樣的TX屬性。OrderListManager服務(wù)接下來調(diào)用AuditManager方法的時(shí)候,這樣的解釋也是正確的。
圖1:集成組件事務(wù)
EJB架構(gòu)通過允許組件集成器宣告式地(declaratively)提供正確的事務(wù)屬性來實(shí)現(xiàn)這種靈活性。我們沒有研究宣告式事務(wù)管理的替代物(稱為編程式事務(wù)控制),因?yàn)樗婕暗礁淖兇a來影響不同的運(yùn)行時(shí)事務(wù)行為。幾乎所有的J2EE應(yīng)用程序服務(wù)器都按照X/Open XA規(guī)范提供了分布式的事務(wù)管理器來適應(yīng)兩步提交(Two-Phase Commit)協(xié)議?,F(xiàn)在的問題是,在EJB服務(wù)器之外,我們能利用相同的功能嗎?Spring就是一個(gè)替代解決方案。讓我們來看看Spring是如何幫助我們解決事務(wù)集成問題的。
使用Spring進(jìn)行事務(wù)管理
我們將看到一個(gè)輕量級的事務(wù)架構(gòu),它能夠管理組件級的事務(wù)集成。Spring就是一個(gè)解決方案,它的優(yōu)勢在于它沒有像JNDI 數(shù)據(jù)源那樣嵌入到J2EE容器服務(wù)中。還有一點(diǎn)值得注意,如果我們希望把這個(gè)輕量級的事務(wù)架構(gòu)插入到已有的J2EE容器中,也沒有任何困難??雌饋硭趦烧咧g的平衡性方面做得很好。
另一方面,Spring 輕量級事務(wù)架構(gòu)還使用了面向方面編程(AOP)框架。Spring AOP框架組件使用了激活了AOP的Spring bean工廠。通過在組件服務(wù)層(在一個(gè)Spring特定的配置文件applicationContext.XML中)指定事務(wù)特性,就把各種事務(wù)劃分開來了。
<beans>
<!-其它一些代碼... -->
<bean id="orderListManager" class="org.springFramework.transaction
.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager1"/>
</property>
<property name="target">
<ref local="orderListManagerTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="getAllOrderList">
PROPAGATION_REQUIRED
</prop>
<prop key="getOrderList">
PROPAGATION_REQUIRED
</prop>
<prop key="createOrderList">
PROPAGATION_REQUIRED
</prop>
<prop key="addLineItem">
PROPAGATION_REQUIRED,
-com.example.exception.FacadeException
</prop>
<prop key="getAllLineItems">
PROPAGATION_REQUIRED,readOnly
</prop>
<prop key="queryNumberOfLineItems">
PROPAGATION_REQUIRED,readOnly
</prop>
</props>
</property>
</bean>
</beans>
一旦我們在服務(wù)層指定了事務(wù)屬性,它們(即事務(wù)屬性)就可以被org.springframework.transaction.PlatformTransactionManager接口的具體實(shí)現(xiàn)所截取和解釋。該接口如下所示:
public interface PlatformTransactionManager{
TransactionStatus getTransaction(TransactionDefinition definition);
void commit(TransactionStatus status);
void rollback(TransactionStatus status);
}
Hibernate事務(wù)管理器
由于我們已經(jīng)決定把Hibernate作為ORM工具,我們必須編寫一個(gè)Hibernate特定的事務(wù)管理器實(shí)現(xiàn),我們下一步就做這個(gè)工作。
<beans>
<!-- other code goes here... -->
<bean id="transactionManager1" class="org.springframework.orm.hibernate. HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory1"/>
</property>
</bean>
</beans>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
spring hibernate的事務(wù)處理(使用hibernate原有的sessionFactory)
springmvc3.2.2+hibernate4.2.1(一)
Spring?的OpenSessionInViewFilter簡介
反思Spring:由Ruby on Rails想到的
主題:解惑:在spring+hibernate中,只讀事務(wù)是如何被優(yōu)化的。
spring的那些事兒
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服