hibernate - Valores predeterminados de EHCache en una aplicación Grails 1.3.9
default-value (1)
Grails buscará un ehcache.xml en el directorio conf. Si no se encuentra, usará el que está en su classpath, eche un vistazo al ehcache-core.jar. Verás un archivo llamado ehcache-failsafe.xml donde encontrarás:
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
Para hacer uso de la memoria caché de consultas, debe haber configurado en su Datasource.groovy:
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class=''org.hibernate.cache.EhCacheProvider''
}
Aunque, como señaló @GreyBeardedGeek, EhCache es un caché de escritura simultánea. Solo almacenará en caché los objetos que se manipulan a través de hibernación y su caché de segundo nivel. Si escribe una consulta sql en su base de datos, no almacenará en caché objetos en su caché.
Para entenderlo más profundamente, échale un vistazo aquí y aquí .
¿Cuáles son los valores predeterminados de ehcache en una aplicación Grails 1.3.9? En particular, estoy interesado en el valor de la caché de consultas; Eliminé un par de filas a través de postgres ''psql y no veo los cambios reflejados en mi aplicación. No he agregado el archivo ehcache.xml al directorio conf. Incluso reinicié la aplicación Grails y los datos aún aparecen en el informe. ¿No hay ningún archivo de caché que pueda eliminar como solución alternativa?
actualización: agregué el siguiente archivo de configuración 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>
Pero el tiempo de StandardQueryCacheToIdleSeconds = "30" tampoco funciona.