バッチ挿入だけを行っている場合、Hibernateはキャッシュ(第2レベルまたはそれ以外)を使用しますか?データベースからエンティティが要求されておらず、ジェネレータも使用されていません。また、StatelessSessionとSessionは答えを変えますか?JDBCバッチサイズが50のセッションを使用していた場合はどうなりますか?使用するキャッシュはEhcacheです
1 に答える
3
バッチ挿入だけを行っている場合、Hibernateはキャッシュ(第2レベルまたはそれ以外)を使用しますか?
新しく挿入されたエンティティインスタンスは、データベースにフラッシュされる前にL1キャッシュ(セッションレベルのキャッシュ)にキャッシュされます(セクション13.バッチ処理を参照)。したがって、 OOMを防ぐために定期的にセッションを実行する必要がflush
あります。clear
また、StatelessSessionとSessionは答えを変えますか?
はい。セクション13.3に書かれているように。StatelessSessionインターフェース:AStatelessSession
には永続コンテキストが関連付けられておらず、高レベルのライフサイクルセマンティクスの多くを提供していません。特に、ステートレスセッションは、第1レベルのキャッシュを実装せず、第2レベルまたはクエリキャッシュと対話しません。
JDBCバッチサイズが50のセッションを使用していた場合はどうなりますか?
これは、50回の挿入ごとにflush
/セッションする必要があることを意味します。clear
于 2010-04-23T16:33:02.997 に答える