HibernateDaoSupport类用法的介绍

Spring的Hibernate ORM框架带来了方便的HibernateDaoSupport类,你的DAO类可以继承它:  

public class StudentDaoHibernate extends HibernateDaoSupportimplements StudentDao{ 

 .................  } 

 如果你选择这种设计,就需要动态注入SessionFactory而HibernateDaoSupport包含这个属性.这个类提供了一个方便的方法getHibernateTemplate();就能得到HibernateTemplate的一个实例.它也有getSession()和releaseSession,以便于你应为某些原因而不使用HibernateTempate的情况下执行Hibernate操作。  HibernateDaoSupport提供了基于AOP事务的自动处理,程序员完全可以不用理会事务的开始与提交。在JDBC中一个Connection对象使用一个事务,那么在Hibernate中一个事务肯定要关联一个SessionFactory了,然而这个SessionFactory却没有在DAO中体现。其实主要的原因是HibernateDaoSupport类已经默默地做了封装的工作,它用一个setSessionFactory方法将SessionFactory进行注入,所以继承自HibernateDaoSupport类的DAO都会具有SessionFactory的属性,从而可以通过SessionFactory创建Session实例操作数据库。  在继承HibrnateDaoSupport的DAO实现里,HibernateSession的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次session”的策略,自动提高数据库访问的性能。

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

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

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

public class UserDAOImpl extends HibernateDaoSupport implementsUserDAO{
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实现里,HibernateSession的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次session”的策略,自动提高数据库访问的性能。


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

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

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

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

在继承HibrnateDaoSupport的DAO实现里,HibernateSession的管理完全不需要Hibernate代码打开,而由Spring来管理。Spring会根据实际的操作,采用“每次事务打开一次session”的策略,自动提高数据库访问的性能。 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值