11

Hibernate の第 2 レベル キャッシュとクエリ キャッシュを使用し、内部ehcache.xmlで何も指定しない場合、デフォルトのキャッシュ時間はどれくらいですか?

4

1 に答える 1

12

Cache Configurationのドキュメントから抜粋:

次の属性と要素はオプションです。

timeToIdleSeconds:
要素が期限切れになる前にアイドル状態になる時間を設定します。
つまり、要素の有効期限が切れるまでのアクセス間の最大時間
要素が永遠でない場合にのみ使用されます。
オプションの属性。値 0 は、要素が無限にアイドル状態になる可能性があることを意味します。
デフォルト値は 0 です。

timeToLiveSeconds:
有効期限が切れる前の要素の存続時間を設定します。
つまり、作成時刻から要素の有効期限が切れるまでの最大時間。
要素が永遠でない場合にのみ使用されます。
オプションの属性。値 0 は、Element が無限に存続できることを意味します。
デフォルト値は 0 です。

EHCache は有効期限ではなく timeToLive を使用し、指定されていない場合のデフォルトは 0 であることに注意してください。


更新:キャッシュを構成するときのデフォルトに関する上記の説明は正しいですが、何も指定しない場合、これらのデフォルトは適用されないようですehcache.xml。そのため、もう少し掘り下げたところ、EHCache は実際にはその場合 ( StandardQueryCachedefaultCacheを含む) を常に使用する可能性があり、この defaultCache には 2 分のtimeToLive があると思います。

<defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU"
        />

現時点では確認できませんが、次のようにします。

  • 最初に、EHCache のロギングを有効にします。EHCache は、defaultCache が使用されている場合に警告をログに記録します。

defaultCache は非常に便利ですが、各キャッシュを個別に構成することをお勧めします。このため、defaultCache 値に基づいてキャッシュが作成されるたびに、ログ警告レベルのメッセージが発行されます。

  • 次に、ehcache.xml を提供します (そして、StandardQueryCacheのキャッシュを構成します)。
于 2010-03-18T04:42:33.427 に答える