免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
備忘使用hibernate分頁時連接池耗盡-Hibernate-Java
Hibernate可以實(shí)現(xiàn)分頁查詢,昨天試了一下,分頁效果不錯。但是發(fā)現(xiàn)了一個問題,就是當(dāng)請求超過20次的時候頁面就會卡死。經(jīng)檢查,是卡在分頁查詢這一塊。

應(yīng)用程序采用struts2 + spring2 + hibernate3架構(gòu)
連接池配置使用的是c3p0, 最大池大小為20, 很顯然是連接池耗盡導(dǎo)致的?!≡黾舆B接池大小只是飲鴆止渴,總還有耗盡的時候,必須找到根本原因。


Dao類的分頁查詢方法如下:
java 代碼
 
  1. public List getTopics(int perPageStartNum, int perPageShowNum, long f_id) {  
  2.     Query query = getSession().createQuery("from Topic where forumId=" + f_id);  
  3.     query.setFirstResult(perPageStartNum);  
  4.     query.setMaxResults(perPageShowNum);  
  5.     return query.list();  
  6. }  

我嘗試在獲得list之后,使用getSession().close()關(guān)閉,沒有效果。

早上來上班繼續(xù)調(diào)試,問題依舊。仔細(xì)想想可能還是對于spring中集成的操作hibernate session 的方法不熟悉。
查閱Spring API:
geSession()是org.springframework.orm.hibernate3.support.HibernateDaoSupport 中的一個方法,
它可以從當(dāng)前事務(wù)或者一個新的事務(wù)獲得一個hibernate session.
通常使用releaseSession(org.hibernate.Session)方法與getSession()配合。
如果沒有綁定線程,releaseSession關(guān)閉由這個DAO的SessionFactory創(chuàng)建的Hibernate Session?!?br>
修改后的代碼為:
java 代碼
 
  1. public List getTopics(int perPageStartNum, int perPageShowNum, long f_id) {  
  2.     Session session = getSession();  
  3.   
  4.     List list = session.createQuery("from Topic where forumId=" + f_id)  
  5.            .setFirstResult(perPageStartNum)  
  6.            .setMaxResults(perPageShowNum)  
  7.            .list();  
  8.   
  9.     releaseSession(session);  
  10.   
  11.     return list;  
  12. }  


啟動服務(wù)器測試,問題解決。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
hibernate spring的一個簡單分頁實(shí)現(xiàn)
java學(xué)習(xí)筆記
Hibernate 查詢,做分頁處理
hibernate的查詢緩存
Hibernate之緩存使用一
回調(diào) Spring Hibernate DAO 持久層開發(fā),
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服