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.
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:
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>
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>
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>
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();
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.