Hibernate的DAO实现

10.7  Hibernate的DAO实现
DAO对象是模块化的数据库访问组件,DAO对象通常包括:对持久化类的基本CRUD操作(插入、查询、更新、删除)操作。Spring对Hibernate的DAO实现提供了良好的支持。主要有如下两种方式的DAO实现:
q       继承HibernateDaoSupport的实现DAO q       基于Hibernate3.0实现DAO
不管采用哪一种实现,这种DAO对象都极好地融合到Spring的ApplicationContext中,遵循依赖注入模式,提高解耦。
10.7.1 继承HibernateDaoSupport实现DAO
Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供如下两个方法,方便DAO的实现:
q       public final HibernateTemplate getHibernateTemplate()
q       public final void setSessionFactory(SessionFactory sessionFactory)
其中,setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来根据刚才的SessionFactory产生Session,最后生成HibernateTemplate来完成数据库访问。
典型的继承HibernateDaoSupport的DAO实现的代码如下:
public class PersonDAOHibernate extends HibernateDaoSupport implements PersonDAO
{
    //采用log4j来完成调试时的日志功能
private static Log log = LogFactory.getLog(NewsDAOHibernate.class);
         //返回全部的人的实例
    public List getPersons()
         {       
                   //通过HibernateTemplate的find方法返回Person的全部实例
           return getHibernateTemplate().find("from Person");
    }
         /**
          * 根据主键返回特定实例
          * @ return 特定主键对应的Person实例
          * @ param 主键值
    public News getPerson(int personid)
         {
           return (Person)getHibernateTemplate().get(Person.class, new Integer(personid));
    }
         /**
          * @ person 需要保存的Person实例
          */
    public void savePerson(Person person)
         {                
                   getHibernateTemplate().saveOrUpdate(person);
    }
         /**
          * @ param personid 需要删除Person实例的主键
          * /
    public void removePerson(int personid)
         {
                   //先加载特定实例
           Object p = getHibernateTemplate().load(Person.class, new Integer(personid));
                   //删除特定实例
           getHibernateTemplate().delete(p);
    }
}
可以与前面的PersonDAOHibernate对比,会发现代码量大大减少。事实上,DAO的实现依然借助于HibernateTemplate的模板访问方式,只是,HibernateDaoSupport将依赖注入SessionFactory的工作已经完成,获取HibernateTemplate的工作也已完成。该DAO的配置必须依赖于SessionFactory,具体的配置如下:
    "http://www.springframework.org/dtd/spring-beans.dtd">
        
        
                  
           com.mysql.jdbc.Driver
                                   
           jdbc:mysql://wonder:3306/j2ee
                  
           root
                  
           pass
   
        
          
                                     lee/Person.hbm.xml
               
          
          
          
                   
                                    
                                     org.hibernate.dialect.MySQLDialect
                                    
                         update
                   
       
          

你可能感兴趣的:(Hibernate的DAO实现)