|
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; } } |