日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

getHibernateTemplate()与getSession()的区别

發布時間:2025/6/15 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
  • getHibernateTemplate().find():??
  • List?list?=?getHibernateTemplate().find(String?sql?):??
  • </span>??
  • 這種的前提是sql必須是hql ,原始sql 不能執行。?
    ?

    3.

    使用getSession()方法你只要繼承 sessionFactory,而使用getHibernateTemplate()方法必須繼承HibernateDaoSupport當然包括 sessionFactory

    getSession()方法是沒有經過spring包裝 的,spring會把最原始的session給你,在使用完之后必須自己調用相應的close方法,而且也不會對聲明式事務進行相應的管理,一旦沒有及時 關閉連接,就會導致數據庫連接池的連接數溢出,getHibernateTemplate()方法是經過spring封裝的,例如添加相應的聲明式事務管 理,由spring管理相應的連接。

    在實際的使用過程中發現的確getHibernateTemplate()比getSession()方法要好很多,但是有些方法在getHibernateTemplate()并沒有提供,這時我們用HibernateCallback 回調的方法管理數據庫.

    例如如下代碼:

    [java] view plaincopy
  • public?List?getList(){??
  • ????????return?(List)?getHibernateTemplate().execute(??
  • ????????????????new?HibernateCallback()?{??
  • ????????????????????public?List?doInHibernate(final?Session?s)??
  • ????????????????????????????throws?HibernateException,?SQLException?{??
  • ??
  • StringBuffer?sb?=?new?StringBuffer();??
  • Query?query?=?s.createSQLQuery(sb.toString());//[b]執行普通sql[/b]??
  • Query?query?=?s.createQuery(sb.toString());//[b]執行hql?[/b]??
  • List?list?=?query.list();??
  • return?list?;??
  • ????????????????????}??
  • ????????????????});???????????
  • ????}??
  • </span>??
  • 采用這種做法的好處是:不用關心事務。session的創建和銷毀,一切都在程序內部完成。看看名字doInHibernate就知道好處了。不好的是程序看起來比較亂!


    推薦使用回調函數!

    總結

    以上是生活随笔為你收集整理的getHibernateTemplate()与getSession()的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。