2012-01-19 12 views
2

私はすべてのデータベース関連タスクにHibernateを使用しています。 私は、接続を維持するためにHibernateUtilのクラスを使用して、最終的に私がsession.clear()が必要ですか?

session.close(); 

と私の機能を乗り越えることを後に行うブロック内のコードの最後に、この

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

ような何かをやっています関数の中で私はいくつかのクエリを発射し、arraylistで結果を取得しています。

私の質問は、ということである一次レベルのキャッシュはできるだけ早く私がセッションを閉じていますか私は

session.clear() 

1次キャッシュがクリアされていない場合、それは保持するとその強制的に明確に持っているようにクリアされます私のオブジェクトへの参照は、ガベージコレクションのために到達不能になり、最終的にはメモリが失われてしまいます。お願いします。

答えて

1

いいえ、session.clear()を呼び出す必要はありません。セッションを閉じるとクリアされます。

セッションをクリアするのは、セッションが長時間実行されている場合や、大量のエンティティをメモリに保持してバッチ更新を実行して、エラーやメモリエラーを回避する場合に便利です。しかし、通常のトランザクションの期間だけセッションを開いたままにしておくと、クリアは必要ありません。

関連する問題