Spring 3 と Hibernate 3.6 を使用した Web アプリケーションの開発に取り組んでいます。現時点では、Spring と Hibernate によるキャッシュがどのように機能するかを理解しようとしています。Caching with Hibernate に関する情報源と Spring に関する情報源を見つけたので、情報をまとめてみました。私はまだ両方のフレームワークにいくつかの質問をしています。誰かがそれらに答えたり、ここにリストされている事実が正しいかどうか教えてくれたらうれしいです.
ほとんどの場合、短い回答 (はい/いいえ) で十分です。このリストは、Spring と Hibernate によるキャッシュがどのように機能するかを理解したい他の人にも役立つと思います。
General
1) Hibernate は次のキャッシュをサポートします: 1st Level Cache、2nd Level Cache、Query Cache
2) Spring 自体は、次のキャッシングの可能性をサポートしています: メソッドキャッシングのみ
1st Level Cache
3) 1st Level Cache は、すべての Hibernate アプリケーションの一部です。
4)休止状態セッションごとに 1 番目のレベルのキャッシュが作成されます。
5)第 1 レベルのキャッシュには何が保存されますか? オブジェクトまたはそれらのプロパティの値だけですか? クエリとその結果?
2nd Level Cache
6)わかったこと: 2nd Level Cache は、アプリケーションごとに 1 回使用されます。それは間違っていませんか?あたり1回使用されていませんSessionFactory
か?および: 複数の sessionfactorys = 複数の第 2 レベルのキャッシュが可能ですか?
7)第 2 レベルのキャッシュに保存されるもの: 私の意見では、オブジェクト自体ではなく、1 つのレコードに属する値のみです。
8) 1 つのレコードの値を第 2 レベル キャッシュに格納する場合、関連する値 (外部キーを介して接続されたオブジェクトから) も格納できますか?
9)第 2 レベルのキャッシュ内の 1 つのオブジェクトの値を更新すると、それに接続されているオブジェクトの値もキャッシュ内で更新できますか?
10)オブジェクトの値が変化している場合、どうすれば第 2 レベルのキャッシュを更新できますか? 流す?キャッシュの一部だけを更新できますか、それともキャッシュ全体を更新する必要がありますか?
11)第 2 レベルのキャッシュが意味をなすのはどこで、そうでないのはどこですか?
12)キャッシュ モード: 各キャッシュ モードは異なるキャッシュ戦略を提供しますか? たとえば、キャッシュモードが「読み取り専用」の場合、データベースとキャッシュの同期は必要ありませんか? 他のキャッシュ モードは同期を提供しますか? 同期は開発者自身が行う必要があると思いましたか?
Query Cache
13) Query Cache と 2nd Level Cache の違いは何ですか? 私の意見では、クエリキャッシュの結果セットは保存されますが、値ではなくIDのみで保存されます。クエリが再度使用され、結果セットがまだ「正しい」場合、ID に属する値が 2 次キャッシュからクエリされます。
14)クエリ キャッシュには、第 2 レベルのキャッシュを使用する必要がありますか?
15) Query Cache はどこで意味があり、どこで意味がないのですか?
Spring
16) Spring はメソッドキャッシングよりも多くのキャッシングの可能性を提供しますか?
17)メソッドキャッシングはハイバネートキャッシングにリンクされていません
18)ただし: メソッドのキャッシングには、Ehcache のような第 2 レベルが必要です (hibernate でも使用できます)。
19)データベースクエリなしでメソッドキャッシングを使用できますか?
Getting mixed up
20) hibernate に ehcache を第 2 レベル キャッシュとして使用し、Spring に Ehcache をメソッド キャッシングに使用する場合、同じ Ehcache-instance を使用できますか? 何かが混じる可能性はありますか?
21) 1 次キャッシュと 2 次キャッシュを使用する場合、それらを混同することはできますか? データベースにクエリを実行するとき、結果はどこから来るのでしょうか? 1 番目または 2 番目のレベルのキャッシュですか? 第 1 レベルのキャッシュは第 2 レベルのキャッシュで動作しますか?
22)私が言及したキャッシュを使用することで混乱する可能性のあるものは他にありますか? :-)
どんな質問にも答えてくれてありがとう!:-)