second example cache java hibernate annotations second-level-cache

java - example - Cómo puedo desactivar el caché de segundo nivel de algunas entidades determinadas en Hibernate sin cambiar las anotaciones



spring boot cache (2)

En Terracotta 3.1 y versiones posteriores, puede habilitar / deshabilitar las memorias caché de segundo nivel de Hibernate por región, tanto en la configuración (estáticamente) como en el tiempo de ejecución, usando la Consola de desarrollador de Terracotta.

También puede supervisar estadísticas en tiempo real sobre la memoria caché e Hibernate, para nodos individuales en un clúster o en todo el clúster.

Terracota es de código abierto. Para obtener más información, echa un vistazo a Terracotta para Hibernate .

Estoy usando la memoria caché de segundo nivel de Hibernate en mi aplicación, por algún motivo comercial no puedo cambiar la anotación de la entidad .

En mi proyecto, además de cambiar la base de datos de Hibernate, también existen otros SQL nativos que no pasan por Hibernate. Por lo tanto, los datos de caché de segundo nivel de Hibernate podrían estar obsoletos después de que la base de datos se actualice desde SQL nativo. Es por eso que quiero deshabilitar el caché de segundo nivel para ciertas entidades (programáticamente o de otra manera que cambiar la anotación).

¡Gracias por adelantado!


ADVERTENCIA: como señaló Jens Schauder, es imposible configurar Ehcache para almacenar 0 elementos en la memoria al establecer maxElementsInMemory = "0", ya que efectivamente causa el efecto opuesto: establece un tamaño ilimitado para la memoria caché. Este comportamiento no se menciona en la página de caché de Hibernate , pero está documentado en la página de configuración de caché .

Revisé rápidamente la documentación y aún no he encontrado un enfoque alternativo. No puedo eliminar esta respuesta yo solo. :-(

Mi sugerencia original:

Puede configurar el proveedor de implementación de la memoria caché de segundo nivel en tiempos TTL cortos y / o almacenar 0 entradas de tipo de entidad particular.

Por ejemplo, si está utilizando el Ehcache, puede configurarlo en ehcache.xml: *

<cache name="com.problematic.cache.EntityName" maxElementsInMemory="0" <<== this should effectively disable caching for EntityName overflowToDisk="false" <<== Do not overflow any entries to disk />

Consulte la documentación de Hibernate Caching in Ehcache.