1

バッチ挿入だけを行っている場合、Hibernateはキャッシュ(第2レベルまたはそれ以外)を使用しますか?データベースからエンティティが要求されておらず、ジェネレータも使用されていません。また、StatelessSessionとSessionは答えを変えますか?JDBCバッチサイズが50のセッションを使用していた場合はどうなりますか?使用するキャッシュはEhcacheです

4

1 に答える 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 に答える