Hibernate é uma biblioteca de mapeamento objeto-relacional para linguagem Java. Ele fornece mapeamento de classes Java para tabela de banco de dados e reduz o ciclo geral de desenvolvimento. Por causa dos benefícios que o Hibernate oferece, mais e mais aplicativos altamente transacionais são desenvolvidos usando o Hibernate. Aqui está um exemplo de Hibernate em um aplicativo Java.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import org.hibernate.*; public class HibernateSample { ... Session session = factory.openSession(); session = factory.openSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery("from Customer c"); Iterator it = query.list().iterator(); while (it.hasNext ()){ Customer customer = (Customer) it.next(); ... } tx.commit(); session.close(); } |
Mas, esses aplicativos Hibernate de alto tráfego estão enfrentando um grande problema de escalabilidade. Embora eles possam ser dimensionados no nível da camada do aplicativo, seu banco de dados ou armazenamento de dados não é capaz de dimensionar com o número crescente de carga transacional.
O cache distribuído Java é a melhor técnica para resolver esse problema porque reduz as viagens caras ao banco de dados que estão causando gargalos de escalabilidade. Por esta razão, o Hibernate fornece uma infraestrutura de cache que inclui cache de primeiro e segundo nível.
O cache de primeiro nível do Hibernate fornece um cache básico autônomo (in-proc) que está associado ao Número da objeto e está limitado apenas à sessão atual. Mas, o problema com o cache de primeiro nível do Hibernate é que ele não permite o compartilhamento de objetos entre diferentes sessões. Se o mesmo objeto for requerido por diferentes sessões, todos eles fazem a viagem do banco de dados para carregá-lo, o que eventualmente aumenta o tráfego do banco de dados e causa problemas de escalabilidade. Além disso, quando a sessão é fechada, todos os dados do cache também são perdidos e, da próxima vez, você precisa buscá-los novamente no banco de dados.
Esses aplicativos Hibernate de alto tráfego com apenas o primeiro nível quando implantados no web farm também enfrentam problemas de sincronização de cache do servidor. No web farm, cada nó executa um servidor web – Apache, Oracle WebLogic etc. – com várias instâncias de httpd processo para servir os pedidos. E, cache de primeiro nível de hibernação em cada httpd processo de trabalho tem uma versão diferente dos mesmos dados armazenados em cache diretamente do banco de dados.
É por isso que o Hibernate fornece um cache de segundo nível com modelo de provedor. Hibernar cache de segundo nível permite que você conecte 3rd provedor de cache distribuído (out-proc) para armazenar objetos em cache entre sessões e servidores. O cache de segundo nível de hibernação está associado a SessãoFábrica objeto e está disponível para todo o aplicativo, em vez de uma única sessão.
Ao habilitar o cache de segundo nível do Hibernate, você acaba com dois caches; um é o cache de primeiro nível e o outro é o cache de segundo nível. O Hibernate sempre tenta recuperar os objetos do cache de primeiro nível se falhar tenta recuperá-los do cache de segundo nível. Se isso também falhar, os objetos serão carregados diretamente do banco de dados e armazenados em cache também. Essa configuração reduz significativamente o tráfego do banco de dados porque a maioria dos dados é atendida pelo banco de dados de segundo nível cache distribuído.
NCache Java implementou um provedor de cache de segundo nível Hibernate estendendo org.hibernate.cache.CacheProvider. Você pode conectar facilmente NCache Provedor de cache distribuído Java Hibernate com seu aplicativo Hibernate sem nenhuma alteração de código. NCache permite que você dimensione seu aplicativo Hibernate para configurações de vários servidores sem que o banco de dados se torne o gargalo. NCache também fornece todos os recursos de cache distribuído de nível empresarial, como gerenciamento de tamanho de dados, sincronização de dados entre servidor e banco de dados, etc.
Você pode conectar NCache provedor de cache Java Hibernate simplesmente modificando seu hibernate.cfg.xml e ncache.xml da seguinte forma
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<hibernate-configuration> <session-factory> <property name = "cache.provider_class"> alachisoft.ncache.integrations.hibernate.cache.NCacheProvider, alachisoft.ncache.integrations.hibernate.cache </property> </session-factory> </hibernate-configuration> <ncache> <region name = "default"> <add key = "cacheName" value = "myClusterCache"/> <add key = "enableCacheException" value = "false"/> <class name = "hibernator.BLL.Customer"> <add key = "priority" value = "1"/> <add key = "useAsync" value = "false"/> <add key = "relativeExpiration" value = "180"/> </class> </region> </ncache> |
Assim, usando NCache Provedor de cache distribuído Java Hibernate, você pode dimensionar linearmente seus aplicativos Hibernate sem nenhuma alteração de código.
Então, baixe um teste de 60 dias totalmente funcional do NCache Enterprise e experimente você mesmo.
Eu simplesmente quero dizer que sou apenas iniciante em blogs e gostei muito do seu site. É mais do que provável que eu esteja planejando marcar seu blog como favorito. Você realmente vem com histórias incríveis.
Com tantas informações nele, esse tipo de artigo mantém o interesse dos usuários no site e continua compartilhando mais.
treinamento java em chennai
blog útil… obrigado por compartilhar