上QQ阅读APP看书,第一时间看更新
16.3 DAO层设计
16.3.1 Spring管理SessionFactory
通过Spring定义数据源,并配置和管理SessionFactory。该SessionFactory为其他DAO组件的持久化访问提供支持,代码如下所示。
<! -- 定义数据源Bean --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost/mystruts2</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean> <! -- 定义SessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">false</prop> </props> </property> <property name="mappingResources"> <list> <value>net/hncu/po/User.hbm.xml</value> </list> </property> </bean>
16.3.2 创建DAO接口
新建UserDAO接口,该接口中定义了5个方法,分别用来进行添加用户、删除用户、更新用户、查询所有用户和按ID查询用户操作,代码如下所示。
package net.hncu.dao; import java.util.List; import net.hncu.po.User; public interface UserDAO { //添加用户 public void save(User user); //删除用户 public void delete(int id); //更新用户 public void update(User user); //查询所有用户 public List queryAll(); //按id查询用户 public User queryByID(int id); }
16.3.3 创建DAO实现类
新建UserDAOImpl类,该类实现UserDAO接口。在该类中添加相应方法的具体操作,代码如下所示。
package net.hncu.dao; import java.util.List; import net.hncu.po.User; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class UserDAOImpl extends HibernateDaoSupport implements UserDAO { // 添加用户 public void save(User user) { this.getHibernateTemplate().save(user); } //删除用户 public void delete(int id) { this.getHibernateTemplate().delete( this.getHibernateTemplate().get(User.class, id)); } //更新用户 public void update(User user) { this.getHibernateTemplate().saveOrUpdate(user); } //查询所有用户 public List queryAll() { return this.getHibernateTemplate().find("from User"); } //按id查询用户 public User queryByID(int id) { return (User) this.getHibernateTemplate().get(User.class, id); } }
16.3.4 配置DAO组件
在Spring配置文件中定义HibernateTemplate模板类,并为其注入SessionFactory实例。同样配置DAO组件,并为其注入HibernateTemplate实例,代码如下所示。
<! -- 定义hibernateTemplate --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> <! -- 配置DAO组件 --> <bean id="userDAO" class="net.hncu.dao.UserDAOImpl"> <property name="hibernateTemplate"> <ref bean="hibernateTemplate"/> </property> </bean>