Hibernate Documentationがこれの良い例を示す。また、これはblog postあなたにいくつかの洞察を与えるでしょう。私はそこからいくつかの行を追加します。
refresh()
メソッドを使用して、オブジェクトとそのコレクションをいつでも再ロードすることができます。これは、データベース・トリガーを使用してオブジェクトの一部のプロパティーを初期化する場合に便利です。
sess.save(cat);
sess.flush(); //force the SQL INSERT
sess.refresh(cat); //re-read the state (after the trigger executes)
hereを参照してください。
save(), update() or saveOrUpdate()
にオブジェクトを渡すたびに、load(), get(), list(), iterate() or scroll()
を使用してオブジェクトを取得するたびに、そのオブジェクトがセッションの内部キャッシュに追加されます。
flush()
が後で呼び出されると、そのオブジェクトの状態はデータベースと同期されます。この同期を行わない場合や、膨大な数のオブジェクトを処理していてメモリを効率的に管理する必要がある場合は、evict()
メソッドを使用してオブジェクトとそのコレクションを1次キャッシュから削除できます。
ScrollableResult cats = sess.createQuery("from Cat as cat").scroll(); //a huge result set
while (cats.next()) {
Cat cat = (Cat) cats.get(0);
doSomethingWithACat(cat);
sess.evict(cat); // (if gives the compile time error then use it: sess.evict(cat.getClass());
}
完全な例をhereからお読みください。
セッションAPIについては、hereをご覧ください。
私はsessionFectory.evict(cat)を呼び出そうとしていますが、コンパイル時エラー - 引数は適用されません。 –
@KevalTrivediサンプルコードとログのようなすべての関連情報とともに新しい質問を投稿することを検討してください。 – ManuPK