11

当使用 Hibernate 2 级缓存和查询缓存并且内部没有指定任何内容ehcache.xml时,默认缓存时间是多少?

4

1 回答 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 值创建缓存时都会发出日志警告级别消息。

于 2010-03-18T04:42:33.427 回答