getHibernateTemplate()与getSession()的区别
1.
getHibernateTemplate已經封裝好了一些基本的方法,可以直接去用
而getSession只是獲取一個數據工廠的session,然后大部分方法都需要自己寫,加hql語句,然后用query方法執行
?
2.
HibernateTemplate 提供非常多的常用方法來完成基本的操作,比如通常的增加、刪除、修改、查詢等操作,Spring 2.0更增加對命名SQL查詢的支持,也增加對分頁的支持。大部分情況下,使用Hibernate的常規用法,就可完成大多數DAO對象的CRUD操作。 下面是HibernateTemplate的常用方法簡介:?
q void delete(Object entity):刪除指定持久化實例?
q deleteAll(Collection entities):刪除集合內全部持久化類實例?
q find(String queryString):根據HQL查詢字符串來返回實例集合?
q findByNamedQuery(String queryName):根據命名查詢返回實例集合?
q get(Class entityClass, Serializable id):根據主鍵加載特定持久化類的實例?
q save(Object entity):保存新的實例?
q saveOrUpdate(Object entity):根據實例狀態,選擇保存或者更新?
q update(Object entity):更新實例的狀態,要求entity是持久狀態?
q setMaxResults(int maxResults):設置分頁的大小
例如如下代碼:
[java] view plaincopy
?
3.
使用getSession()方法你只要繼承 sessionFactory,而使用getHibernateTemplate()方法必須繼承HibernateDaoSupport當然包括 sessionFactory
getSession()方法是沒有經過spring包裝 的,spring會把最原始的session給你,在使用完之后必須自己調用相應的close方法,而且也不會對聲明式事務進行相應的管理,一旦沒有及時 關閉連接,就會導致數據庫連接池的連接數溢出,getHibernateTemplate()方法是經過spring封裝的,例如添加相應的聲明式事務管 理,由spring管理相應的連接。
在實際的使用過程中發現的確getHibernateTemplate()比getSession()方法要好很多,但是有些方法在getHibernateTemplate()并沒有提供,這時我們用HibernateCallback 回調的方法管理數據庫.
例如如下代碼:
[java] view plaincopy
采用這種做法的好處是:不用關心事務。session的創建和銷毀,一切都在程序內部完成。看看名字doInHibernate就知道好處了。不好的是程序看起來比較亂!
總結
以上是生活随笔為你收集整理的getHibernateTemplate()与getSession()的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse 用Hibernate T
- 下一篇: getHibernateTemplate