?
本文檔使用 PHP中文網(wǎng)手冊(cè) 發(fā)布
這個(gè)小案例通過(guò)Spring中的一些Java5特性,使用Hibernate和JDBC實(shí)現(xiàn)了DAO。這個(gè)項(xiàng)目非常簡(jiǎn)單,
因?yàn)槠淠康闹皇茄菔?code class="classname">SimpleJdbcTemplate和@Repository
注解的基本用法及幾個(gè)其他DAO相關(guān)的特性,
沒其他內(nèi)容了。
范例中的域?qū)ο笫擒嚨牟考S袃蓚€(gè)類:Part
和CarModel
。
使用CarPartsInventory
可以查詢部件,更新某些部件的庫(kù)存以及添加新部件。
有3個(gè)基于CarPartsInventory
接口的DAO實(shí)現(xiàn),采用了不同的風(fēng)格。
兩個(gè)使用Hibernate,另一個(gè)用JDBC。JdbcCarPartsInventoryImpl
用了JDBC和SimpleJdbcTemplate
。
如果仔細(xì)看這個(gè)DAO,你將發(fā)現(xiàn)SimpleJdbcTemplate
使用的Java5特性大大簡(jiǎn)化了你的DAO代碼。
TemplateHibernateCarPartsInventoryImpl
使用HibernateTemplate
來(lái)查詢Part并更新庫(kù)存。
如果你已經(jīng)習(xí)慣了使用Spring和Hibernate進(jìn)行開發(fā),那這里就沒有什么特別的東西了。
PlainHibernateCarPartsInventoryImpl
并沒有使用HibernateTemplate
。
它用了Hibernate3 API查詢會(huì)話和數(shù)據(jù)庫(kù)來(lái)獲取部件。當(dāng)然,Hibernate3 API并不會(huì)拋出Spring DataAccessExceptions
,
這也是最初使用HibernateTemplate
的原因之一。Spring 2.0添加了一個(gè)注解,讓你仍舊可以獲得相同的行為。
@Repository
注解(如果仔細(xì)看PlainHibernateCarPartsInventoryImpl
,你會(huì)發(fā)現(xiàn)上面有這個(gè)注解)
會(huì)結(jié)合PersistenceExceptionTranslatorPostProcessor
自動(dòng)將Hibernate異常轉(zhuǎn)換為Spring DataAccessExceptions
。