Spring為Hibernate的DAO提供工具類:HibernateDaoSupport。對照API,該類主要提供兩個方法:
- public final HibernateTemplate getHibernateTemplate()
- public final void setSessionFactory(SessionFactory sessionFactory)
其中,setSessionFactory方法接收來自Spring的applicationContext的依賴注入,接收了配置在Spring中的SessionFactory實例,getHibernateTemplate方法用來利用剛才的SessionFactory生成Session,再生成HibernateTemplate來完成數(shù)據(jù)庫的訪問。
典型的繼承HibernateDaoSupport的DAO代碼如下:
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{
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的實現(xiàn)依然借助了HibernateTemplate的模板訪問方式,只是,HibernateDaoSupport將依賴注入SessionFactory的工作已經(jīng)完成,獲取HibernateTemplate的工作也已經(jīng)完成。注意,這種方法須在Spring的配置文件中配置SessionFactory。
在繼承HibrnateDaoSupport的DAO實現(xiàn)里,Hibernate Session的管理完全不需要Hibernate代碼打開,而由Spring來管理。Spring會根據(jù)實際的操作,采用“每次事務(wù)打開一次session”的策略,自動提高數(shù)據(jù)庫訪問的性能。
posted on 2009-03-06 12:43
圣克爾·光 閱讀(977)
評論(0) 編輯 收藏 所屬分類:
SSH