HibernateTemplate和HibernateDaoSupport

Spring整合Hibernate后,两个工具类:HibernateTemplate和HibernateDaoSupport。

HibernamteTemplate

HibernateTemplate是Spring提供的一个就Hibernate访问持久层技术而言、支持Dao组件的一个工具。HibernateTemplate提供持久层访问模板,应用HibernateTemplate无须实现特定的接口,它只需要提供一个sessionFactory的引用就可以执行持久化操作。
该模板无需打开session及关闭Session。它只要获得SessionFactory的引用,就可以打开Session,并在持久化访问结束后关闭Session,程序开发只需要完成持久层逻辑,通用的CRUD操作由HibernateTemplate完成.

HibernateDaoSupport

HibernateDaoSupport同样也是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 }  

摘抄自:http://dongruan00.iteye.com/blog/1772343

 

转载于:https://www.cnblogs.com/splide/p/3647053.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值