2

多くの資料を調べましたが、休止状態の第 2 レベルのキャッシュに関する 1 つの疑問を解決することはできません。

1) たとえば、1000 件のレコードを返すクエリがあるとします。(たとえば、年齢が 30 歳を超える従業員から)。クエリをキャッシュ可能にしました。その間、レコードの数が増加し、同じクエリの結果が 2000 になるはずです。次に同じクエリを実行するときに、休止状態がキャッシュからレコードを取得する方法。新しいレコードのみをフェッチしますか?

2) シナリオ 2. クエリを実行するとします (たとえば、年齢が 30 歳を超える従業員から)。1000 件のレコードを取得しました。現在、レコードは内部で更新されています。もう一度同じクエリを実行します。この場合、休止状態はどのようにフェッチしますか?

4

1 に答える 1

2

クエリ キャッシュは、結果セット内の実際のエンティティの状態をキャッシュしません。識別子の値と値の型の結果のみをキャッシュします。

シナリオ 1: Hibernate はタイムスタンプをクエリと共に保存して新しいレコードを追跡し、hibernate が新しいレコードを見つけた場合、クエリを再度起動して古いデータを削除します。

シナリオ 2:実際の状態オブジェクトがクエリでキャッシュされたことがないため、常に更新されたレコードが返されます。

詳しくはリンク参照

于 2012-11-06T07:13:55.197 に答える