Caché de segundo nivel de hibernación

Hibernate es una popular solución de mapeo relacional de objetos de código abierto para Java. Con el fin de aumentar el rendimiento, Hibernate también proporciona la función de almacenamiento en caché. Hibernate proporciona dos tipos de almacenamiento en caché, caché de primer nivel y caché de segundo nivel.

La caché de primer nivel está integrada y se usa de forma predeterminada, pero tiene un uso limitado, no es accesible y es solo una caché en proceso. La caché de segundo nivel proporciona una arquitectura conectable, lo que significa que se puede usar una caché de terceros como caché de segundo nivel para Hibernate.

NCache Implementa el proveedor de caché de segundo nivel de Hibernate, lo que facilita la ejecución de la base de datos y minimiza el tráfico SQL. Esto permite una configuración directa sin cambios de código, lo que otorga a su aplicación acceso inmediato a... NCacheSu sólido conjunto de funciones de almacenamiento en caché distribuido.

Arquitectura de NCache como proveedor de caché de segundo nivel (L2) de Hibernate entre la sesión de la aplicación y la base de datos.
Figura 1: NCache como proveedor de caché de segundo nivel para hibernate

Configuración NCache como caché de segundo nivel para Hibernate

Configuración NCache como el caché de segundo nivel para Hibernate es bastante fácil. No se requieren cambios en el código real. Solo es necesario editar los archivos de configuración.

ahora a agregar NCache como caché de segundo nivel para Hibernate, el hibernate.cfg.xml debe editarse de la siguiente manera:

  • 2nd La caché de nivel debe estar habilitada configurando el hibernate.cache.use_segundo_nivel_cache propiedad como verdadera.
  • NCache debe configurarse como proveedor de caché de segundo nivel de Hibernate configurando el hibernate.cache.region.factory_class propiedad como JCacheRegionFactory para Hibernate 3.6 y superior.

Este es un ejemplo de los cambios realizados en el hibernación.cfg.xml archivo:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.region.factory_class">JCacheRegionFactory</property>
    ...
</session-factory>
</hibernate-configuration>

Configuración de regiones de caché

Hibernate hace uso de regiones de caché para almacenar objetos. NCache permite la configuración de estas regiones de caché con diferentes propiedades. Él NCacheEl archivo Hibernate.xml se utiliza para este propósito. Este archivo contiene todos los ajustes y opciones de configuración para regiones y configuraciones relacionadas utilizadas por NCache.

A continuación se muestra una muestra NCacheArchivo de configuración de Hibernate.xml donde se configuran las regiones:

<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
    <cache-regions>
        <region name="hibernator.BLL.Customer:Customer" cache-name="myPartitionedcache" priority="BelowNormal" expiration-type="Absolute" expiration-period="8"/>
        <region name="DefaultRegion" cache-name="myPartitionedcache" priority="default" expiration-type="none" expiration-period="0" />
    </cache-regions>
	...
</application-config>
</configuration>

Configuración de sincronización de base de datos

NCache es una caché distribuida versátil, eficiente y efectiva para .NET Framework, .NET Core y Java. Viene con un amplio conjunto de características y funcionalidades. Una de estas características es la sincronización de la base de datos a través de dependencia SQL. Aquí es donde el caché verifica la base de datos en busca de cambios y vuelve a cargar o elimina los elementos que se encuentran obsoletos o redundantes.

NCache Aprovecha las notificaciones nativas de la base de datos (como SQL Dependency u Oracle Dependency) para sincronizar la caché L2 de Hibernate. Esto garantiza que, si una aplicación de terceros modifica la base de datos, NCache Invalida o recarga automáticamente las entidades de Hibernate afectadas. Para habilitar esta funcionalidad, aplique los siguientes cambios a NCacheHibernar.xml archivo:

<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
  	... 
    <database-dependencies>
        <dependency entity-name="hibernator.BLL.Customer" type="oracle" sql-statement="select ContactName from Customer where CustomerID ='?'" cache-key-format="hibernator.BLL.Customer#[pk]" connection-string="Your Connection String"/>
    </database-dependencies>
</application-config>
</configuration>

Configuración de caché de consultas de Hibernate

Hibernate proporciona una característica de caché de consultas. Aquí los resultados de las consultas se almacenan en caché en el caché de segundo nivel. NCache le permite almacenar en caché dichas consultas utilizando esta función. Esta función se puede activar editando el hibernación.cfg.xml archivo de la siguiente manera:

<hibernate-configuration>
  <session-factory>
  ...
  <property name="hibernate.cache.use_query_cache">true</property>
  </session-factory>
</hibernate-configuration>

Habilitar la caché de consultas no almacena en caché cada consulta de forma predeterminada. En su lugar, las consultas que deben almacenarse en caché deben configurarse como almacenables en caché en el código. Para configurar una consulta almacenable en caché, llame a la función setCacheable(true) de la consulta mientras crea la consulta. El siguiente código es un ejemplo que muestra una consulta almacenable en caché:

List customerEnumerator = session.createQuery("from Customer c").setCacheable(true).list(); 

Ventajas del uso NCache como caché de segundo nivel para Hibernate

Las siguientes son las principales razones por las que NCache es una opción adecuada para usarse como caché de segundo nivel para Hibernate donde la aplicación se ejecuta en un entorno de varios servidores.

  • Escalabilidad lineal de la caché para aplicaciones Java: NCache permite escalabilidad lineal Al permitirle agregar servidores de caché al clúster en tiempo de ejecución, esta arquitectura aumenta tanto la capacidad de almacenamiento como el rendimiento de las transacciones, lo que garantiza que su aplicación Hibernate mantenga el rendimiento a medida que aumenta la carga de usuarios.
  • Alta disponibilidad a través de topologías de almacenamiento en caché distribuido: NCache es un caché muy flexible, lo que significa que proporciona a sus usuarios un amplio conjunto de topologías de almacenamiento en caché como Topología de espejo, Topología replicada, Topología de partición y Topología de partición de réplica. Cada topología se adapta a un escenario y una necesidad específicos, lo que la hace flexible.
  • Sincronización de base de datos: tienes la opcion de sincroniza tu caché con la base de datos como SQL Server, Oracle, etc. Al hacerlo, el caché verifica la base de datos en busca de cambios y elimina o mantiene elementos en el caché en función de ese cambio. Esto asegura que su caché contenga elementos que estén siempre actualizados.
  • Operaciones asincrónicas sin bloqueo para reducir la latencia: Operaciones asincrónicas están disponibles en NCache. Estas operaciones le permiten trabajar en su aplicación sin esperar a que se actualice el caché, lo que hace que todo sea más rápido. Estas operaciones se pueden habilitar con Hibernate.

¿Qué hacer a continuación?

Preguntas frecuentes

Puedes configurar NCache como caché de segundo nivel de Hibernate al habilitar la hibernate.cache.use_second_level_cache propiedad en su hibernate.cfg.xml y configurando el hibernate.cache.region.factory_class a JCacheRegionFactoryEsta configuración no requiere cambios en el código de la aplicación.

Sí, NCache Es totalmente compatible con el almacenamiento en caché de consultas de Hibernate. Para habilitarlo, configure hibernate.cache.use_query_cache propiedad a true en su archivo de configuración y marque consultas específicas como almacenables en caché en su código Java usando el setCacheable(true) método.

NCache Se sincroniza con bases de datos como SQL Server y Oracle mediante notificaciones nativas de bases de datos (dependencia SQL). Cuando los datos cambian en la base de datos, NCache invalida o recarga automáticamente las entidades Hibernate correspondientes en el caché distribuido para evitar datos obsoletos.

Sí, NCache Es compatible con las versiones 3.6 a 6.x de Hibernate. Utiliza el estándar JCache (JSR-107) para proporcionar un proveedor de caché distribuido compatible con diversos entornos Java.

NCache Proporciona escalabilidad lineal para aplicaciones Hibernate, ya que permite añadir servidores de caché al clúster durante la ejecución. Esta arquitectura distribuida aumenta la capacidad de almacenamiento y el rendimiento de las transacciones sin necesidad de tiempo de inactividad de las aplicaciones.

Contáctenos

TELÉFONO

+1 214-619-2601 (EE.UU.)

+44 20 7993 8327 (Reino Unido)

© Copyright Alachisoft 2002 - Todos los derechos reservados. NCache es una marca registrada de Diyatech Corp.