Hibernate の第 2 レベル キャッシュを賢く使用することで、アプリケーションのパフォーマンスが向上すると信じており、そのためにインターネットと Hibernate コースで学習を開始しました。第 2 レベルのキャッシュと基本的にその仕組みについてはかなり良い説明がありますが、私の目標は、見つけられなかった特定の質問から始めて、物事がどのように機能するかを正確に理解することです。したがって、Hibernate のキャッシュ全般についていくつか質問します。特に第 2 レベルのキャッシュでは。
回答に関する注意事項:
A. 明らかな質問や無関係な質問であっても、お答えいただければ幸いです。
B. 質問がキャッシュ プロバイダーに依存する場合は、Ehcache に関する回答を聞きたいです
。
質問:
第 2 レベルのキャッシュを構成すると、第 1 レベルのキャッシュは無効になりますか? そうでない場合、エンティティを取得しようとしたときにイベントのプロセスがどのように発生するか、どのキャッシュ レベルが最初にヒットするか?
クエリ キャッシュは、クエリ テキストを HQL またはネイティブ SQL として保存しますか?
第 2 レベルのキャッシュは、JPA を介した Hibernate と直接 Hibernate を使用して同じように機能しますか?
クエリキャッシュにあるIDで第2レベルキャッシュをヒットすることにより、クエリキャッシュが第2レベルキャッシュに参加することを理解しました。何らかの理由で ID の一部が第 2 レベルのキャッシュに存在しなくなった場合、すべてのエンティティが再度フェッチされるか、存在しない部分だけがフェッチされるのでしょうか?
同期について – 特定のトランザクションで、第 2 レベル キャッシュに格納されているエンティティを更新することにより – 第 2 レベル キャッシュでエンティティが更新されるのはいつですか? この行為が第 2 レベルのキャッシュとクエリ キャッシュの両方にどのように影響するか について、さらに詳しく説明します。
ありがとうございました!