• hibernateDaoSupport类的使用详解


     

    Spring为Hibernate的DAO提供工具类:HibernateDaoSupport。该类主要提供了两个方法:

    public final HibernateTemplate getHibernateTemplate()
    public final void setSessionFactory(SessionFactory sessionFactory)
    其中,setSessionFactory方法接收来自Spring的applicationContext的依赖注入,接收了配置在Spring 中的SessionFactory实例,getHibernateTemplate方法用来利用刚才的SessionFactory生成Session, 再生成HibernateTemplate来完成数据库的访问。

    典型的继承HibernateDaoSupport的DAO代码如下:

    public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{
    public void save(Users transientInstance) {
    log.debug("saving Users instance");
    try {
    getHibernateTemplate().save(transientInstance);
    log.debug("save successful");
    } catch (RuntimeException re) {
    log.error("save failed", re);
    throw re;
    }
    }
    ………………
    }
    实 际上,DAO的实现依然借助了HibernateTemplate的模板访问方式,只是,HibernateDaoSupport将依赖注入 SessionFactory的工作已经完成,获取HibernateTemplate的工作也已经完成。注意,这种方法须在Spring的配置文件中配 置SessionFactory。

    在继承HibrnateDaoSupport的DAO实现里,Hibernate Session的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次 session”的策略,自动提高数据库访问的性能。

    在继承了hibernateDaoSupport类的dao类中必须装配sessionFactory实例,spring不会自动装配hibernateDaoSupport父类对象,子类继承自父类后不能继承其构造函数,只能重新生成子类的对象所以必须重新装配依赖注入对象sessionFactory:

      <bean name="product2ShoppingCarDao" class="com.inspur.dao.impl.Product2ShoppingCarDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"></property>
      </bean>

  • 相关阅读:
    【洛谷P3804】【模板】后缀自动机 (SAM)
    【洛谷P3321】序列统计
    【洛谷P4929】【模板】舞蹈链(DLX)
    【洛谷P3703】树点涂色
    Kubernets二进制安装(5)之私有仓库harbor搭建
    忘记Mysql的root用户密码处理方法(以mysql 5.5.33为例)
    编译安装MySQL 5.5.33
    Kubernets二进制安装(4)之Docker安装
    Kubernets二进制安装(3)之准备签发证书环境
    Kubernets二进制安装(2)之Bind9安装
  • 原文地址:https://www.cnblogs.com/moonfans/p/2947632.html
Copyright © 2020-2023  润新知