方法一:在spring配置文件中,为继承hibernatedaosupport的dao注入sessionfactory spring为hibernate的dao提供工具类:hibernatedaosupport。该类主要提供如下两个方法,方便dao的实现: public final hibernatetemplate gethibernatetemplate() public fina
方法一:在spring配置文件中,为继承hibernatedaosupport的dao注入sessionfactory
spring为hibernate的dao提供工具类:hibernatedaosupport。该类主要提供如下两个方法,方便dao的实现: public final hibernatetemplate gethibernatetemplate()
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,具体的配置如下:
/p>
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