2

どのクラス(つまり、どの異なるタイプのインスタンス)が休止状態の第2レベルのキャッシュにキャッシュされているかを確認する方法はありますか?

4

1 に答える 1

4

第2レベルのキャッシュは、エンティティのインスタンスをキャッシュせず、「脱水」バージョンのエンティティをキャッシュします。これはこのブログ投稿でよく説明されています:

第2レベルのキャッシュ

Hibernateキャッシュは、エンティティのインスタンスを格納しません。代わりに、Hibernateは脱水状態と呼ばれるものを使用します。脱水状態は、脱水状態が文字列、整数などの配列のようなものであり、エンティティのIDが脱水エンティティへのポインタである逆シリアル化されたエンティティと考えることができます。概念的には、IDをキーとして、配列を値として含むマップと考えることができます。または、キャッシュ領域については以下のようになります。

{ id -> { atribute1, attribute2, attribute3 } }
{ 1 -> { "a name", 20, null } }
{ 2 -> { "another name", 30, 4 } }

エンティティが他のエンティティのコレクションを保持している場合は、他のエンティティもキャッシュする必要があります。この場合、次のようになります。

{ id -> { atribute1, attribute2, attribute3, Set{item1..n} } }
{ 1 -> { "a name", 20, null, {1,2,5} } }
{ 2 -> { "another name", 30, 4, {4,8} } }

使用しているL2キャッシュプロバイダーによっては、キャッシュを監視/ブラウザ化するためのコンソールを取得する場合がありますが、それでも「インスタンス」は表示されません。

資力

于 2010-09-15T09:34:53.520 に答える