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