26.3. 使用SimpleJdbcTemplate和@Repository实现DAO

Spring Framework

26.3. 使用SimpleJdbcTemplate@Repository实现DAO

这个小案例通过Spring中的一些Java5特性,使用Hibernate和JDBC实现了DAO。这个项目非常简单, 因为其目的只是演示SimpleJdbcTemplate@Repository注解的基本用法及几个其他DAO相关的特性, 没其他内容了。

26.3.1. 域对象

范例中的域对象是车的部件。有两个类:PartCarModel。 使用CarPartsInventory可以查询部件,更新某些部件的库存以及添加新部件。

26.3.2. Data Access Object

有3个基于CarPartsInventory接口的DAO实现,采用了不同的风格。 两个使用Hibernate,另一个用JDBC。JdbcCarPartsInventoryImpl用了JDBC和SimpleJdbcTemplate。 如果仔细看这个DAO,你将发现SimpleJdbcTemplate使用的Java5特性大大简化了你的DAO代码。

TemplateHibernateCarPartsInventoryImpl使用HibernateTemplate来查询Part并更新库存。 如果你已经习惯了使用Spring和Hibernate进行开发,那这里就没有什么特别的东西了。 PlainHibernateCarPartsInventoryImpl并没有使用HibernateTemplate。 它用了Hibernate3 API查询会话和数据库来获取部件。当然,Hibernate3 API并不会抛出Spring DataAccessExceptions, 这也是最初使用HibernateTemplate的原因之一。Spring 2.0添加了一个注解,让你仍旧可以获得相同的行为。 @Repository注解(如果仔细看PlainHibernateCarPartsInventoryImpl,你会发现上面有这个注解) 会结合PersistenceExceptionTranslatorPostProcessor 自动将Hibernate异常转换为Spring DataAccessExceptions

26.3.3. 构建

samples/showcases/java5-dao目录包含了项目的源代码。 项目只包含单元测试,你可以脱离源代码来看这些单元测试。要构建并运行这些单元测试,需要使用Apache Ant (或在你喜欢的IDE中运行范例)。在Java5 VM中运行ant tests(项目中使用了注解和泛型)。