HibernateTemplate和HibernateDaoSupport区别与联系
2018-03-22 21:38
477 查看
转载自:https://www.cnblogs.com/splide/p/3647053.htmlSpring整合Hibernate后,两个工具类:HibernateTemplate和HibernateDaoSupport。HibernamteTemplateHibernateTemplate是Spring提供的一个就Hibernate访问持久层技术而言、支持Dao组件的一个工具。HibernateTemplate提供持久层访问模板,应用HibernateTemplate无须实现特定的接口,它只需要提供一个sessionFactory的引用就可以执行持久化操作。
该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久层逻辑,通用的CRUD操作由HibernateTemplate完成.HibernateDaoSupportHibernateDaoSupport同样也是Spring提供的、为Hibernate访问数据库的DAO组件:该类主要提供如下两个方法,方便DAO的实现:1>public final HiberanteTemplate getHibernateTemplate()2>public final void setSessionFactory(SessionFactory sessionFactory)其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来生成HibernateTeplate模板对象来完成数据库访问。
同样常用HibernateDaoSupport中的getSession方法来获取Session对象对数据库进行操作,相对HibernateTemplate对象而言,HibernateDaoSupport应用更加灵活 配置方案1.注入SessionFactory在spring配置文件中,对Dao注入sessionFactory,如下所示:
这里的sessionFacotry注入不是给类的,而是给继承HibernateDaoSupport类的sessionFactory,在上面源码中可以看到。这样编写的一个好处就是我们不再需要关心关闭、是否连接成功等问题。主要是很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。而且也没有必要这样做。在实际使用中,如果持久层继承HibernateDaoSupport的话,那么每个持久层的类,都需要注入SessionFactory,非常麻烦。 2.注入HibernateTemplate这种方法本质上跟上面的sessionFacotry一样,只不过进行了一层包装,好处就是Dao中的类就不用再继承那个HibernateDaoSuport了,不过要先配置好HibernateTemplate:
配置文件如下所示:
该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久层逻辑,通用的CRUD操作由HibernateTemplate完成.HibernateDaoSupportHibernateDaoSupport同样也是Spring提供的、为Hibernate访问数据库的DAO组件:该类主要提供如下两个方法,方便DAO的实现:1>public final HiberanteTemplate getHibernateTemplate()2>public final void setSessionFactory(SessionFactory sessionFactory)其中setSessionFactory方法用来接收Spring的ApplicationContext的依赖注入,可接收配置在Spring的SessionFactory实例,getHibernateTemplate方法则用来生成HibernateTeplate模板对象来完成数据库访问。
同样常用HibernateDaoSupport中的getSession方法来获取Session对象对数据库进行操作,相对HibernateTemplate对象而言,HibernateDaoSupport应用更加灵活 配置方案1.注入SessionFactory在spring配置文件中,对Dao注入sessionFactory,如下所示:
1 <bean id="manageEmpDaoImpl" 2 class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl"> 3 <property name="sessionFactory" ref="sessionFactory" /> 4 </bean>Dao代码:
1 public class ManageEmpDaoImpl extends HibernateDaoSupport implements ManageEmpDao{ 2 public void addEmp(Emp emp) { 3 this.getHibernateTemplate().save(emp); 4 } 5 public List<Emp> getEmpList() { 6 return null; 7 } 8 }
这里的sessionFacotry注入不是给类的,而是给继承HibernateDaoSupport类的sessionFactory,在上面源码中可以看到。这样编写的一个好处就是我们不再需要关心关闭、是否连接成功等问题。主要是很方便。但是这个不好就是java只支持单继承,所以唯一的继承给了HibernateDaoSupport有点可惜。而且也没有必要这样做。在实际使用中,如果持久层继承HibernateDaoSupport的话,那么每个持久层的类,都需要注入SessionFactory,非常麻烦。 2.注入HibernateTemplate这种方法本质上跟上面的sessionFacotry一样,只不过进行了一层包装,好处就是Dao中的类就不用再继承那个HibernateDaoSuport了,不过要先配置好HibernateTemplate:
配置文件如下所示:
1 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 2 <property name="sessionFactory" ref="sessionFactory" /> 3 </bean> 4 <bean id="manageEmpDaoImpl" class="com.cyou.lms.emp.manageemp.dao.impl.ManageEmpDaoImpl"/>Dao代码:
1 public class ManageEmpDaoImpl implements ManageEmpDao { 2 @Resource 3 private HibernateTemplate hibernateTemplate; 4 public void addEmp(Emp emp) { 5 this.hibernateTemplate.save(emp); 6 } 7 public List<Emp> getEmpList() { 8 return null; 9 } 10 }
相关文章推荐
- HibernateDaoSupport和HibernateTemplate的区别和联系
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- hibernateTemplate 与session的区别 HibernateTemplate、HibernateDaoSupport两种方法实现增删改查
- HibernateDaoSupport的getSession()与HibernateTemplate的区别
- spring与hibernate整合之:继承HibernateDAOSupport方式+理解xml与AutoWired、Resource的区别
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- hibernateTemplate 与session的区别 HibernateTemplate、HibernateDaoSupport两种方法实现增删改查
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- spring与hibernate整合之:继承HibernateDAOSupport方式+理解xml与AutoWired、Resource的区别
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- spring的HibernateDaoSupport、HibernateTemplate、jdbcTemplate的区别
- 使用注解为HibernateDaoSupport注入sessionFactory
- spring的HibernateDaoSupport以及HibernateTempla 4000 te和jdbcTemplate的选择问题
- 关于ssh为什么要在DAO层实现类中继承HibernateDaoSupport的原因
- ssh整合之HibernateDaoSupport的使用
- HibernateDaoSupport
- hibernateTemplate 与 hibernateDaosupport