Cache de segundo nível do Hibernate

Hibernate é uma solução de mapeamento objeto-relacional de código aberto popular para Java. Com o propósito de aumentar o desempenho, o Hibernate também fornece o recurso de cache. O Hibernate fornece dois tipos de cache, Cache de Primeiro Nível e Cache de Segundo Nível.

O cache de primeiro nível é integrado e usado como padrão, mas é limitado em uso, não acessível e é apenas um cache em processo. O Cache de Segundo Nível fornece uma arquitetura conectável, o que significa que um cache de terceiros pode ser usado como o Cache de Segundo Nível para Hibernar.

NCache fornece o provedor Hibernate Second Level Cache que pode ser configurado sem nenhuma alteração no código. Ao fazer isso, você obtém acesso ao rico conjunto de recursos de cache distribuído fornecidos pelo NCache.

NCache como provedor de cache de segundo nível para hibernação
Figura 1: NCache como provedor de cache de segundo nível para hibernação

instalação NCache como Cache de Segundo Nível para Hibernate

Configurando NCache como o Cache de Segundo Nível para Hibernate é bastante fácil. Nenhuma alteração no código real é necessária. Apenas os arquivos de configuração precisam ser editados.

Agora para adicionar NCache como Cache de Segundo Nível para Hibernate, o hibernate.cfg.xml deve ser editado da seguinte forma:

  • 2nd O cache de nível deve ser ativado definindo o hibernate.cache.use_second_level_cache propriedade como verdadeira.
  • NCache deve ser configurado como provedor de cache de segundo nível do Hibernate, definindo o hibernate.cache.region.factory_class propriedade como JCacheRegionFactory para Hibernate 3.6 e superior.

Aqui está um exemplo das alterações feitas no hibernate.cfg.xml arquivo:

<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>

Configuração de regiões de cache

O Hibernate usa regiões de cache para armazenar objetos. NCache permite a configuração dessas regiões de cache com propriedades diferentes. o NCacheO arquivo Hibernate.xml é usado para esta finalidade. Este arquivo contém todas as configurações e opções para regiões e configurações relacionadas usadas pelo NCache.

Segue uma amostra NCacheArquivo de configuração Hibernate.xml onde as regiões são configuradas:

<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>

Configuração de sincronização de banco de dados

NCache é um cache distribuído versátil, eficiente e eficaz para .NET Framework, .NET Coree Java. Ele vem com um amplo conjunto de recursos e funcionalidades. Um desses recursos é a sincronização de banco de dados por meio de Dependência SQL. É aqui que o cache verifica se há alterações no banco de dados e recarrega ou remove os itens considerados desatualizados ou redundantes.

Você tem a opção de configurar NCache como o provedor de Cache de Segundo Nível para Hibernate para usar a funcionalidade de sincronização de banco de dados. Você precisará aplicar as seguintes alterações ao NCachehibernação.xml arquivo:

<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>

Configuração de cache de consulta de hibernação

O Hibernate fornece um recurso de cache de consulta. Aqui os resultados das consultas são armazenados em cache no Cache de Segundo Nível. NCache permite armazenar em cache essas consultas usando esse recurso. Este recurso pode ser ativado editando o hibernate.cfg.xml arquivo da seguinte forma:

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

A ativação do cache de consulta não armazena em cache cada consulta por padrão. Em vez disso, as consultas que precisam ser armazenadas em cache devem ser configuradas para serem armazenadas em cache no código. Para definir uma consulta que pode ser armazenada em cache, chame a função setCacheable(true) da consulta ao criar a consulta. O código abaixo é um exemplo mostrando uma consulta que pode ser armazenada em cache:

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

Benefícios do Uso NCache como Cache de Segundo Nível para Hibernate

A seguir estão os principais motivos NCache é uma opção adequada para ser usada como um Cache de Segundo Nível para Hibernate onde o aplicativo está sendo executado em um ambiente multi-servidor.

  • Escalabilidade linear: Sua aplicação pode ser dimensionado linearmente com NCache através da adição de mais servidores de cache. Ao fazer isso, você não apenas aumenta sua capacidade de armazenamento, mas também aumenta sua velocidade de transação.
  • Cache Flexível: NCache é um cache muito flexível, o que significa que fornece a seus usuários um rico conjunto de topologias de cache como Topologia de Espelho, Topologia Replicada, Topologia de Partição e Topologia de Partição de Réplica. Cada topologia atende a um cenário e necessidade específicos, tornando-a flexível.
  • Sincronização de banco de dados: Você tem a opção de sincronizar seu cache com banco de dados como SQL Server, Oracle, etc. Ao fazer isso, o cache verifica o banco de dados quanto a quaisquer alterações e remove ou mantém itens no cache com base nessa alteração. Isso garante que seu cache contenha itens sempre atualizados.
  • Operações assíncronas: Operações assíncronas estão disponíveis em NCache. Essas operações permitem que você trabalhe em seu aplicativo sem esperar que o cache seja atualizado, tornando tudo mais rápido. Essas operações podem ser habilitadas com o Hibernate.

O que fazer a seguir?

© Copyright Alachisoft 2002 - . Todos os direitos reservados. NCache é uma marca registrada da Diyatech Corp.