当使用 Hibernate 2 级缓存和查询缓存并且内部没有指定任何内容ehcache.xml
时,默认缓存时间是多少?
问问题
13363 次
1 回答
12
取自有关缓存配置的文档:
以下属性和元素是可选的。 timeToIdleSeconds: 设置元素过期前的空闲时间。 即元素过期之前访问之间的最长时间 仅在元素不是永恒的情况下使用。 可选属性。值 0 表示元素可以无限空闲。 默认值为 0。 生存时间秒数: 设置元素过期前的生存时间。 即创建时间和元素过期之间的最长时间。 仅在元素不是永恒的情况下使用。 可选属性。值 0 意味着 Element 可以无限存在。 默认值为 0。
请注意,EHCache 使用 timeToLive,而不是过期时间,如果未指定,则默认值为 0。
更新:虽然上面关于配置缓存时的默认值是正确的,但如果您不提供任何ehcache.xml
. 所以我进一步挖掘,我认为 EHCachedefaultCache
在这种情况下实际上可能总是使用 a - 包括StandardQueryCache - 而这个 defaultCache 的 timeToLive 为 2 分钟:
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
我现在无法确认,但这就是我要做的:
- 首先,在 EHCache 上激活日志记录,当使用 defaultCache 时,EHCache 会记录一个警告:
虽然 defaultCache 非常方便,但最好单独配置每个 Cache。因此,每次根据 defaultCache 值创建缓存时都会发出日志警告级别消息。
- 其次,提供一个 ehcache.xml(并为StandardQueryCache配置一个缓存)。
于 2010-03-18T04:42:33.427 回答