3、除去工廠類以及相應(yīng)的配置文件
除去DaoConfig.java這個(gè)DAO工廠類和相應(yīng)的配置文件dao.xml,因?yàn)镈AO的獲取現(xiàn)在要用spring來(lái)管理。 4、DAO在Spring中的配置(applicationContext.xml)
1. 我們首先創(chuàng)建一個(gè)數(shù)據(jù)源dataSource,在這里配置的是hsqldb數(shù)據(jù)庫(kù)。如果是ORACLE數(shù)據(jù)庫(kù),driverClassName的值是"oracle.jdbc.driver.OracleDriver",URL的值類似于"jdbc:oracle:thin:@wugfMobile:1521:cdcf"。數(shù)據(jù)源現(xiàn)在由spring來(lái)管理,那么現(xiàn)在我們就可以去掉properties目錄下database.properties這個(gè)配置文件了;還有不要忘記修改sql-map-config.xml,去掉 2. sqlMapClient節(jié)點(diǎn)。這個(gè)是針對(duì)ibatis SqlMap的SqlMapClientFactoryBean配置。實(shí)際上配置了一個(gè)sqlMapClient的創(chuàng)建工廠類。configLocation屬性配置了ibatis映射文件的名稱。dataSource屬性指向了使用的數(shù)據(jù)源,這樣所有使用sqlMapClient的DAO都默認(rèn)使用了該數(shù)據(jù)源,除非在DAO的配置中另外顯式指定。 3. TransactionManager節(jié)點(diǎn)。定義了事務(wù),使用的是DataSourceTransactionManager。 4. 下面就可以定義DAO節(jié)點(diǎn)了,如AccountDao,它的實(shí)現(xiàn)類是com.ibatis.jpetstore.persistence.sqlmapdao.AccountSqlMapDao,使用的SQL配置從sqlMapClient中讀取,數(shù)據(jù)庫(kù)連接沒(méi)有特別列出,那么就是默認(rèn)使用sqlMapClient配置的數(shù)據(jù)源datasource。 這樣,我們就把持久層改造完了,其他的DAO配置類似于AccountDao。怎么樣?簡(jiǎn)單吧。這次有接口了:) AccountDao接口->AccountSqlMapDao實(shí)現(xiàn)。 3.5. 業(yè)務(wù)層 業(yè)務(wù)層的位置以及相關(guān)類,如下圖所示:在這個(gè)例子中只有3個(gè)業(yè)務(wù)類,我們以O(shè)rderService類為例來(lái)改造,這個(gè)類是最復(fù)雜的,其中涉及了事務(wù)。 1、在ApplicationContext配置文件中增加bean的配置:
定義了一個(gè)OrderService,還是很容易懂的。為了簡(jiǎn)單起見(jiàn),使用了嵌套bean,其實(shí)現(xiàn)類是com.ibatis.jpetstore.service.OrderService,分別引用了ItemDao,OrderDao,SequenceDao。該bean的insert*實(shí)現(xiàn)了事務(wù)管理(AOP方式)。TransactionProxyFactoryBean自動(dòng)創(chuàng)建一個(gè)事務(wù)advisor, 該advisor包括一個(gè)基于事務(wù)屬性的pointcut,因此只有事務(wù)性的方法被攔截。 2、業(yè)務(wù)類的修改,以O(shè)rderService為例:
紅色部分為修改部分。Spring采用的是Type2的設(shè)置依賴注入,所以我們只需要定義屬性和相應(yīng)的設(shè)值函數(shù)就可以了,ItemDao,OrderDao,SequenceDao的值由spring在運(yùn)行期間注入。構(gòu)造函數(shù)就可以為空了,另外也不需要自己編寫(xiě)代碼處理事務(wù)了(事務(wù)在配置中聲明),daoManager.startTransaction();等與事務(wù)相關(guān)的語(yǔ)句也可以去掉了。和原來(lái)的代碼比較一下,是不是處理精簡(jiǎn)了很多!可以更關(guān)注業(yè)務(wù)的實(shí)現(xiàn)。 4. 結(jié)束語(yǔ) ibatis是一個(gè)功能強(qiáng)大實(shí)用的SQL Map工具,可以直接控制SQL,為系統(tǒng)設(shè)計(jì)提供了更大的自由空間。其提供的最新示例程序JpetStore 4.0,設(shè)計(jì)優(yōu)雅,應(yīng)用了迄今為止很多最佳實(shí)踐和設(shè)計(jì)模式,非常適于學(xué)習(xí)以及在此基礎(chǔ)上創(chuàng)建輕量級(jí)的J2EE WEB應(yīng)用程序。JpetStore 4.0是基于struts的,本文在此基礎(chǔ)上,最大程度保持了原有設(shè)計(jì)的精華以及最小的代碼改動(dòng)量,在業(yè)務(wù)層和持久化層引入了Spring。在您閱讀了本文以及改造后的源代碼后,會(huì)深切的感受到Spring帶來(lái)的種種好處:自然的面向接口的編程,業(yè)務(wù)對(duì)象的依賴注入,一致的數(shù)據(jù)存取框架和聲明式的事務(wù)處理,統(tǒng)一的配置文件…更重要的是Spring既是全面的又是模塊化的,Spring有分層的體系結(jié)構(gòu),這意味著您能選擇僅僅使用它任何一個(gè)獨(dú)立的部分,就像本文,而它的架構(gòu)又是內(nèi)部一致。 |
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
|
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
|
||
相關(guān)文章:
|
||