Utilice el almacenamiento en caché de consultas en Hibernate Cache
El almacenamiento en caché de consultas utiliza la caché L2 para almacenar consultas de modo que siempre que sea necesario ejecutar la misma consulta nuevamente, se pueda recuperar de la caché. Tenga en cuenta que cualquier objeto recuperado como resultado de la consulta se almacena en caché en sus respectivas regiones. Por lo tanto, marque los objetos como almacenables en caché para un uso eficiente del almacenamiento en caché de consultas.
Importante:
La consulta y las claves primarias del conjunto de resultados se almacenan en una región de consulta predeterminada llamada "org.hibernate.cache.StandardQueryCache", que es un nombre completo de la clase StandardQueryCache de Hibernate. Sin embargo, esto sólo es compatible con Hibernate-5.2 y versiones anteriores.
Note
Dado que no todos los resultados de las consultas permanecen iguales durante un período de tiempo, utilice el almacenamiento en caché de consultas con consultas cuyos resultados tengan menos probabilidades de cambiar con frecuencia.
Habilitar el almacenamiento en caché de consultas en Hibernate Cache
Para habilitar el almacenamiento en caché de consultas, en Hibernate cache agregue la siguiente etiqueta a su configuración en hibernación.cfg.xml.
<hibernate-configuration>
<session-factory>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.region.factory_class">com.alachisoft.ncache.NCacheRegionFactory</property>
<property name="ncache.application_id">myapp</property>
<property name="hibernate.cache.use_query_cache">true</property>
</session-factory>
</hibernate-configuration>
Al habilitar el caché de consultas en el caché de Hibernate, no se almacena en caché cada consulta de forma predeterminada. En lugar de ello, las consultas que deben almacenarse en caché deben configurarse como almacenables en caché en el código. Para configurar una consulta como almacenable en caché, llame al setCacheable(true)
función de la consulta al crear una consulta. El siguiente código es un ejemplo que muestra una consulta almacenable en caché en la caché de Hibernate:
var session = sessionFactory.openSession();
ArrayList<Products> productList = (ArrayList<Products>) session.createQuery("from Products p", Products.class).setCacheable(true).list();
for (var product : productList) {
System.out.println("Retrieved Product: " + product);
}
session.close();
Vea también
Inicializar caché
Agregar/Actualizar en Caché
Caché de primer nivel de Hibernate
Configurar regiones y objetos almacenables en caché
Configurar la aplicación Hibernate