2012-01-19 40 views
2

我使用Hibernate進行我的所有數據庫相關的任務。 我使用HibernateUtil類,以保持連接,並在代碼中到底在做這樣的事情session.clear()是必要的嗎?

Session session = null; 
SessionFactory sessionfactory = HibernateUtil.getSessionFactory(); 
session = sessionfactory.openSession(); 

終於阻止我做

session.close(); 

,我的函數獲取結束後,函數內我發射一些查詢,並得到arraylist結果。

我的問題是:在主級高速緩存,一旦我將結束會話或我有強行clear清除與

session.clear() 

,如果主緩存沒有被清除將其持有在refernces我的目標,這將使他們無法到達垃圾收集並最終失去記憶..請幫助

回答

1

沒有,打電話session.clear()是沒有必要的。關閉會話也會清除它。

當你長時間運行的會話,或做批量更新,這保留了大量的實體內存時,避免了或內存錯誤清除會話是非常有用的。但是,如果您只在典型交易期間保持會話開放,則清除並不是必需的。