Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

          在前一篇日志中自動生成hibernate配置文件的時候,會在dao層用到getSession()方法來操作數據庫記錄,但是他還有個方法getHibernateTemplate(),這兩個方法究竟有什么區別呢?

          1.使用getSession()方法你只要繼承sessionFactory,而使用getHibernateTemplate()方法必須繼承 HibernateDaoSupport當然包括sessionFactory,這點區別都不是特別重要的,下面這些區別就很重要了

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

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

          例如如下代碼:

          /**
               * 使用 hql 語句進行操作
               * @param hql HSQL 查詢語句(使用回調函數訪問外部變量,必須是final的)
               * @param offset 開始取數據的下標
              * @param length 讀取數據記錄數
              * @return List 結果集
          */
          public List getListForPage ( final String hql , final int offset , final int length ) {

                        List list = getHibernateTemplate().executeFind ( new HibernateCallback ( ) {
                                      public Object doInHibernate ( Session session ) throws HibernateException, SQLException {
                                                      Query query = session.createQuery ( hql ) ;
                                                      query.setFirstResult ( offset ) ;
                                                      query.setMaxResults ( length ) ;
                                                      List list = query.list ( ) ;
                                                      return list ;
                                     }
                         }) ;
                         return list ;
          }

          posted on 2010-02-22 16:43 seal 閱讀(454) 評論(0)  編輯  收藏 所屬分類: SpringHibernate
          主站蜘蛛池模板: 刚察县| 内乡县| 赣榆县| 张家口市| 普定县| 杨浦区| 孝昌县| 横山县| 普洱| 文成县| 桐柏县| 东源县| 雷州市| 红河县| 托克逊县| 彰化市| 米泉市| 察雅县| 广南县| 林州市| 大洼县| 和田市| 新蔡县| 房山区| 屏山县| 兰西县| 玛纳斯县| 商水县| 读书| 郸城县| 金沙县| 阳泉市| 泰宁县| 鹤山市| 大关县| 堆龙德庆县| 茌平县| 昌乐县| 分宜县| 梨树县| 满洲里市|