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 proporciona el proveedor de caché de segundo nivel de Hibernate que se puede configurar sin ningún cambio en el código. Al hacerlo, obtiene acceso al amplio conjunto de funciones de almacenamiento en caché distribuidas proporcionadas por NCache.

NCache como proveedor de caché de segundo nivel para hibernate
Figura 1: NCache como proveedor de caché de segundo nivel para hibernate

Preparar 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 un caché distribuido versátil, eficiente y efectivo para .NET Framework, .NET Corey 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.

Tienes la opción de configurar NCache como proveedor de caché de segundo nivel para que Hibernate use la funcionalidad de sincronización de la base de datos. Deberá aplicar los siguientes cambios a la 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: Su aplicación puede ser escalado linealmente NCache mediante la adición de más servidores de caché. Al hacerlo, no solo aumenta su capacidad de almacenamiento, sino que también aumenta la velocidad de sus transacciones.
  • Caché flexible: 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 asíncronas: 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?

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