如何在Spring中實現事務暫停系列之一

發表于:2007-06-10來源:作者:點擊數: 標簽:
Spring框架是一個流行的基于輕量級控制反轉容器的 Java /J2EE應用框架,尤其在數據訪問和事務管理方面的能力是眾所周知的。Spring的聲明性事務分離可以應用到任何POJO目標對象,并且包含所有EJB基于容器管理事務中的已聲明事務。后臺的事務管理器支持簡單的

 

 

 

 

 

 

 

 

Spring框架是一個流行的基于輕量級控制反轉容器的Java/J2EE應用框架,尤其在數據訪問和事務管理方面的能力是眾所周知的。Spring的聲明性事務分離可以應用到任何POJO目標對象,并且包含所有EJB基于容器管理事務中的已聲明事務。后臺的事務管理器支持簡單的基于JDBC的事務和全功能的基于JTA的J2EE事務。

這篇文章詳細的討論了Spring的事務管理特性。重點是如何在使用JTA作為后臺事務策略的基礎上讓POJO利用Spring的聲明性事務,這也顯示了Spring的事務服務可以無縫地與J2EE服務器(如BEA WebLogic Server的事務協調器)的事務協調器進行交互,作為EJB CMT傳統事務分離方式的一個替代者。

POJO的聲明性事務

作為Spring聲明性事務分離方式的樣例,讓我們來看一下Spring的樣例應用PetClinic的中心服務外觀中的配置:

清單1:

他遵循Spring的標準XMLBean定義格式。定義了:

1、一個DataSource引用,指向一個JNDI位置—在J2EE服務器管理下這將從JNDI環境中獲取特定的DataSource。

2、一個應用服務實現—這是一個POJO,封裝了業務和數據訪問邏輯。在這里實現了應用中的Clinic服務接口。

3、一個應用服務的事務代理—這個代理為目標服務定義了事務屬性,匹配特定的方法名模式并為之創建相應的事務。在實際的事務管理中,代理指向一個PlatformTransactionManager實現。

注意:除了顯式的代理定義,Spring還支持自動代理機制和通過Commons Attributes或J2SE 5.0注解實現源程序級的元數據使用。這些可選方法的討論超過了本文的范圍??梢詤⒖糞pring的文檔來了解相關細節。

業務接口和業務實現是特定于應用的并且不需要關心Spring或者Spring的事務管理。普通Java對象可以作為服務的目標對象,而且任何普通Java接口可以作為服務的接口。下面是一個Clinic接口的示例:

清單2:

這個接口的實現如下顯示,假設他使用JDBC來執行必要的數據訪問。他通過bean屬性的設置方法來獲取JDBC的DataSource;這與上面的配置中的dataSource屬性定義相對應。

清單3:

如你所見,代碼相當直接。我們使用一個簡單的Java對象,而事務管理由事務代理來處理,這個我們會在后續的連載文章中做出討論。

注意在PetClinic示例應用中實際的基于JDBC的Clinic實現利用了Spring的JDBC支持類來避免直接使用JDBC的API。雖然Spring的事務管理也可以與普通的基于JDBC實現一起工作,就向上面的示例。

(T117)





原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97