9、Hibernate3 DAO
l 需要追加的jar文件:
Ø spring-hibernate3.jar
l 由于JBoss APP Server支持Hibernate3,下面的hibernate3及依赖jar文件只是在部署到Tomcat和Resin时需要追加:
Ø hibernate3.jar
Ø asm.jar
Ø cglib-2.1.3.jar
Ø commons-collections-2.1.1.jar
Ø dom4j-1.6.1.jar
Ø jta.jar(Resin支持,不需要)
l 有关Hibernate3的使用,这里不详细说明,可以参考Hibernate3相关书籍,如《Hibernate3 in Action》
(1) 定义Mapping文件(user.hbm.xml)
<hibernate-mapping>
<class name="org.xqtu.samples.dto.UserDto" table="users">
<id name="userid" type="java.lang.String">
<column name="userid" length="20" />
<generator class="assigned" />
</id>
<property name="password" type="java.lang.String">
<column name="password" length="20" not-null="true" />
</property>
</class>
</hibernate-mapping>
l 这里使用DTO对象映射数据库表纪录
(2) 配置HibernateTemplate(samples-dao-hibernate.xml)
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>${hibernate.resources.user}</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
${hibernate.dialect}
</prop>
</props>
</property>
</bean>
<bean id="hibernateTemplate"
class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
l Spring提供LocalSessionFactoryBean来生成Hibernate的SessionFactory实例,提供给HibernateTemplate使用
l LocalSessionFactoryBean需要指定DataSource,Mapping文件的位置,以及可选的Hibernate属性,主要指定hibernate.dialect,这些值由samples.properties提供:
# hibernate config
hibernate.resources.user=org/xqtu/samples/dao/sqlmap/user.hbm.xml
hibernate.dialect=org.hibernate.dialect.MySQLDialect
(3) 实现DAO接口
public class HibernateUserDaoImpl implements UserDao {
private final String SELECT_USER_HSQL = "FROM UserDto AS A WHERE A.userid = ?";
public List selectUser(String userid) {
return hibernateTemplate
.find(SELECT_USER_HSQL, new Object[] { userid });
}
private HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
}
l 注入HibernateTemplate(samples-dao-hibernate.xml):
<bean id="userDao"
class="org.xqtu.samples.dao.impl.HibernateUserDaoImpl">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
l 结合HSQL,使用HibernateTemplate提供的方法(如find())访问DB