Pregunta

Quiero usar caché de segundo nivel en mi proyecto de hibernación, pero solo sé un poco sobre la caché de segundo nivel de hibernación, ¿alguien puede explicar cómo debo usar esto en mi código y qué configuración y archivo .jar necesito? Establecí esta configuración en mi archivo hibernate.cfg.xml

 <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>

y agregue estos archivos jar ehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar ¿Quiero saber si debo cambiar alguna otra configuración?

y ¿cómo puedo entender que mi proyecto usa caché de segundo nivel?

si solo pon esta configuración, hibernate usa automáticamente esto o debo usar otro código en mi clase .java (como cualquier anotación u otra cosa)

¿Fue útil?

Solución

La anotación que está buscando es org.hibernate.annotations.Cache . El uso básico es:

@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
    ...

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}

Para consultas, debe habilite la caché de consultas estableciendo la propiedad hibernate.cache.use_query_cache en true Y especifique que la consulta se puede almacenar en caché en su declaración (para consultas con nombre) o llamando a setCacheable (true) en la instancia de consulta.

Dicho todo esto, debe tener mucho cuidado con el almacenamiento en caché y ENTENDER REALMENTE lo que está haciendo, de lo contrario, hará más daño que ayuda. No lo mire como "arreglo rápido" - almacenar en caché todo, por ejemplo, es definitivamente lo incorrecto que hacer.

Otros consejos

Su configuración hará que los cachés de segundo nivel y de consulta estén disponibles para su uso en su proyecto, pero aún debe habilitarlo para entidades, colecciones y consultas específicas. Esto requiere una planificación cuidadosa porque hay compensaciones que deberá comprender. En general, los cachés de segundo nivel y de consulta son apropiados para datos de solo lectura o principalmente de lectura, pero no para datos volátiles. Si aún no lo posee, le recomiendo que recoja una copia de Java Persistence with Hibernate . Tiene un muy buen tratamiento del tema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top