Spring 在Hibernate上实现的Template-callback机制上提供有
Spring在Hibernate上实现的Template-callback机制上提供有org.springframework.orm.hibernate3.HibernateTemplate类别与org.springframework.orm.hibernate3.HibernateCallback介面,一个使用的例子如下:
HibernateTemplatehibernateTemplate=newHibernateTemplate(sessionFactory);
...
hibernateTemplate.execute(
newHibernateCallback(){
publicObjectdoInHibernate(Sessionsession)throwsHibernateException{
returnsession.load(User.class);
}
}
);
在HibernateTemplate上也提供有数个方便的方法,在呼叫时为您自动建立HibernateCallback物件,例如get()、save、delete()等方法,您可以改写SessionFactory注入的UserDAO类别,使用HibernateTemplate来简化程式的撰写:
*UserDAO.java
importorg.hibernate.SessionFactory;
importorg.springframework.orm.hibernate3.HibernateTemplate;
publicclassUserDAOimplementsIUserDAO{
privateHibernateTemplatehibernateTemplate;
publicvoidsetSessionFactory(SessionFactorysessionFactory){
hibernateTemplate=newHibernateTemplate(sessionFactory);
}
publicvoidinsert(Useruser){
hibernateTemplate.save(user);
}
publicUserfind(Integerid){
Useruser=(User)hibernateTemplate.get(User.class,id);
returnuser;
}
}
其它的档案并不需要修改,执行的结果也是相同的,您必须在Classpath中加入spring-orm.jar档案才可以执行。
您可以继承org.springframework.orm.hibernate3.support.HibernateDaoSupport类别来撰写UserDAO类别,这可以帮您省去一些管理SessionFactory、HibernateTemplate资源的工作,您只要注入SessionFactory的实例就可以了,例如将上面的UserDAO替代为以下的内容,则程式也是可以执行:
importorg.springframework.orm.hibernate3.support.HibernateDaoSupport;
publicclassUserDAOextendsHibernateDaoSupportimplementsIUserDAO{
//没有HibernateTemplate的定义等操作了,在父类中已经完成
publicvoidinsert(Useruser){
getHibernateTemplate().save(user);
}
publicUserfind(Integerid){
Useruser=(User)getHibernateTemplate().get(User.class,id);
returnuser;
}
}
http://blog.sina.com.cn/s/blog_3ff3946a01009l70.html