隨筆-126  評論-247  文章-5  trackbacks-0

          剛用 hibernate 做測試的時候 , 拋了這么個異常 :
          org.hibernate.HibernateException: No CurrentSessionContext configured!

          這是因為現在我的測試代碼里用了這么一句 : Session session = HibernateUtil.getSessionfactory().getCurrentSession();

          以前一直是自己去 open Session 的 : Session session = HibernateUtil.getSessionfactory().openSession();

          去翻 hibernate 的幫助文檔 , 在文檔的第一章寫道 :

          <!-- Enable Hibernate's automatic session context management -->
          <property name="current_session_context_class">thread</property>

          從它的注釋中不難理解這句的配置 , 它是將 session 交給 hibernate 自動幫我們管理 ,  將這句配置拷貝到 hibernate.cfg.xml 配置文件中 ,

          重新測試程序 , 不料后臺又拋了一個很有意思的異常信息 :

          Not binding factory to JNDI, no JNDI name configured
          Hibernate: 
              insert 
              into
                  person
                  (age, name, id) 
              values
                  (
          ???)
          org.hibernate.SessionException : Session was already closed

          先去溜一眼數據庫 , 發現數據已經正確插入 , 但后臺拋了一個 : Session was already closed 的異常 , 這個異常信息很明顯了 , 因為我代碼中還慣性的敲了一句 : session.close();

          不難想象 , 這是因為我們將 session 交給了 hibernate 來管理 , session.getTransaction().commit() 事務提交完成的時候 , 此時 , session 已經關閉 ,

          我琢磨著 , 這是 hibernate 幫我們關閉的 ( 我猜的 -_- ) , 根據是 , 因為我們沒有 open 過 Session , 而是直接通過 getCurrentSession() 來拿到 Session , 那 Session 是誰

          幫我們 open 的呢 ? 很明顯應該是 hibernate , 那關閉 session 的工作再由 hibernate 來完成就順理成章了 , 不然那就是 " 管殺不管埋! "

          將 session.close(); 注掉 , 再次測試 , 程序一切正常. 當然如果是用 openSession() 就不用費這些事情了.



            
          posted on 2012-10-03 21:24 fancydeepin 閱讀(2080) 評論(1)  編輯  收藏

          評論:
          # re: org.hibernate.HibernateException: No CurrentSessionContext configured! 2013-09-09 21:50 | zhhw
          細節,學習了  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 临夏市| 邵武市| 井冈山市| 锦屏县| 穆棱市| 伊川县| 綦江县| 革吉县| 加查县| 阿拉尔市| 临夏县| 泽普县| 呼图壁县| 宁河县| 星座| 盐亭县| 开封市| 阳曲县| 云阳县| 泰州市| 韩城市| 信丰县| 黄龙县| 资溪县| 马龙县| 吉安县| 葵青区| 连江县| 南岸区| 旬邑县| 任丘市| 东辽县| 吉隆县| 乌恰县| 桐城市| 新泰市| 丰顺县| 江永县| 江陵县| 尤溪县| 安吉县|