查看文章 |
HibernateTemplate and HibernateDaoSupport
2007-09-27 15:22
Spring 在Hibernate上实现的Template-callback机制上提供有 org.springframework.orm.hibernate3.HibernateTemplate类别与 org.springframework.orm.hibernate3.HibernateCallback介面,一个使用的例子如下: HibernateTemplate hibernateTemplate =
new HibernateTemplate(sessionFactory); ... hibernateTemplate.execute(new HibernateCallback() { public Object doInHibernate( Session session) throws HibernateException { return session.load(User.class); } }); 在HibernateTemplate上也提供有数个方便的方法,在呼叫时为您自动建立HibernateCallback物件,例如get()、save、delete()等方法,您可以改写 SessionFactory 注入 的UserDAO类别,使用HibernateTemplate来简化程式的撰写:
package onlyfun.caterpillar; 其它的档案并不需要修改,执行的结果也是相同的,您必须在Classpath中加入spring-orm.jar档案才可以执行。 您可以继承org.springframework.orm.hibernate3.support.HibernateDaoSupport类别来撰写 UserDAO类别,这可以帮您省去一些管理SessionFactory、HibernateTemplate资源的工作,您只要注入 SessionFactory的实例就可以了,例如将上面的UserDAO替代为以下的内容,则程式也是可以执行: package onlyfun.caterpillar;
import org.springframework.orm.hibernate3. support.HibernateDaoSupport; public class UserDAO extends HibernateDaoSupport implements IUserDAO { public void insert(User user) { getHibernateTemplate().save(user); } public User find(Integer id) { User user = (User) getHibernateTemplate().get(User.class, id); return user; } } 注:后一种更加简单,无需Sessionfactory的注入! |
最近读者: