Вопрос по ehcache, hibernate, grails, default-value – Значения EHCache по умолчанию в приложении Grails 1.3.9

1

Каковы значения по умолчанию для ehcache в приложении Grails 1.3.9? В частности, меня интересует значение кэша запросов; Я удалил пару строк через postgres & apos; PSQL и я не вижу изменений, отраженных в моем приложении. Я не добавил файл ehcache.xml в каталог conf. Я даже перезапустил приложение Grails, и данные все еще отображаются в отчете. Нет ли кеш-файлов, которые я могу удалить в качестве обходного пути?

обновление: я добавил следующий файл конфигурации ehcache.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd" >
<diskStore path="/tmp/ehcache_t2"/>
<cacheManagerEventListenerFactory class="" properties=""/>
<defaultCache
   maxElementsInMemory="10000"
   eternal="false"
   timeToLiveSeconds="120">

</defaultCache>
<cache name="org.hibernate.cache.UpdateTimestampsCache"
  maxElementsInMemory="10000"
  timeToIdleSeconds="300"
   />
<cache name="org.hibernate.cache.StandardQueryCache"
  maxElementsInMemory="10000"
  timeToIdleSeconds="30"
   />
</ehcache>

Но StandardQueryCache's timeToIdleSeconds = "30" тоже не работает.

Ehcache используется в качестве сквозного кэша. Если вы удалили строки напрямую через psql, кеш не сможет об этом узнать. Я ожидаю, что кэш останется неизменным. GreyBeardedGeek

Ваш Ответ

1   ответ
1

он будет использовать тот, который указан в вашем classpath, взгляните на ehcache-core.jar. Вы увидите файл с именемehcache-failsafe.xml где вы найдете:

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

Чтобы использовать кеш запросов, вы должны настроить в Datasource.groovy:

hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='org.hibernate.cache.EhCacheProvider'
}

Хотя, как указал @GreyBeardedGeek, EhCache является сквозным кэшем. Он будет кэшировать только те объекты, которыми манипулируют через спящий режим и его кэш второго уровня. Если вы напишете SQL-запрос в вашей базе данных, он не будет кэшировать объекты в вашем кеше.

Чтобы глубже понять это, взглянитеВот а такжеВот.

Похожие вопросы