Sem categoria

JPA do Couchbase usando Hibernate e Eclipselink

Como o Couchbase continua a crescer como empresa e a ser adotado pela comunidade de código aberto, continuamos a encontrar novos desafios e casos de uso ao longo do caminho. Muitas empresas estão recorrendo a nós para ajudar a adicionar um cache a um aplicativo existente ou a evoluir aplicativos para tecnologias de próxima geração. Para essas implementações de cache de nível dois, ajudamos a desenvolver uma camada de acesso a dados para aplicativos no projeto Spring. O Spring Data Couchbase oferece integração com o cluster do Couchbase Server, fornecendo interação de dados centrada em POJO com Couchbase Buckets e ajudando a fornecer uma implementação no estilo de repositório. Esse esforço foi muito bem-sucedido e gerou muito interesse.

No entanto, uma simples pesquisa na Web por "JPA" revela mais do que isso, o que nos ajuda a entender outras necessidades em toda a empresa. Embora o padrão JPA seja bem definido Por fim, a implementação de cada fornecedor varia o suficiente para que o suporte a ORMs específicos, como Eclipselink e Hibernate, exija trabalho adicional. Envolvemos nossos parceiros da Tecnologia Thumbtack que implantou uma de suas equipes especializadas em desenvolvimento NOSQL para ajudar a obter o trabalho realizado. 

O objetivo era fornecer uma estrutura de código boilerplate para aproveitar o Couchbase como um cache de nível dois para o Eclipselink e o Hibernate. Há aprimoramentos a serem feitos com o lançamento de nossos SDKs 2.0 e outros aprimoramentos de integração, mas queríamos poder dar suporte a esses esforços de cache no curto prazo. Ambos os conectores JPA do Hibernate e do Eclipselink foram publicados pela Thumbtack no github com casos de teste para mostrar a configuração.

Hibernar - https://github.com/thumbtack-technology/Couchbase-L2-Hibernate
EclipseLink - https://github.com/thumbtack-technology/Couchbase-L2-EclipseLink

Embora sempre exista a possibilidade de alavancar Moxi para permitir que os clientes memcached existentes sejam sensíveis ao vbubket. Sabíamos que o pacote javax.persistance tinha um interface de cache disponível mas cada implementação de fornecedor requer nuances que precisam ser abordadas. Por exemplo, ao revisar os Documentação do eclipselink mostra a capacidade de adicionar um cache de nível 2, mas nada que nos ajude a entender as especificidades do aproveitamento de uma solução NoSQL. A Thumbtack nos ajudou a resolver esses desafios de configuração.

Eclipselink persistence.xml
<propriedade nome="couchbase.cache.servers"
         valor="https://couchbase-cluster-node01:8091/pools,
                https://couchbase-cluster-node02:8091/pools”/>

<propriedade nome="couchbase.cache.bucket.name" valor="l2-cache"/>
<propriedade nome="couchbase.cache.bucket.password" valor="cachepwd"/>
<propriedade nome="couchbase.cache.ttl" valor=“600”/>

<propriedade nome="eclipselink.descriptor.customizer.
value="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>
>
<propriedade nome="eclipselink.descriptor.customizer.Order"
             valor="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>

>
<propriedade nome="eclipselink.descriptor.customizer.
value="net.thumbtack.couchbase.eclipselink.ClassCustomizer"/>

Hibernate persistence.xml
<propriedade nome="couchbase.cache.servers"
         valor="https://couchbase-cluster-node01:8091/pools,
                https://couchbase-cluster-node02:8091/pools”/>

<propriedade nome="couchbase.cache.bucket.name" valor="l2-cache"/>
<propriedade nome="couchbase.cache.bucket.password" valor="cachepwd"/>
<propriedade nome="couchbase.cache.ttl" valor=“600”/>

<propriedade nome="hibernate.cache.region.factory_class" valor="com.googlecode.hibernate.memcached.MemcachedRegionFactory" />
<propriedade nome="hibernate.memcached.memcacheClientFactory" valor="net.thumbtack.hibernate.couchbase.CouchbaseClientFactory" />

Detalhes adicionais sobre como fazer com que os casos de teste do Thumbtack sejam executados localmente podem ser encontrados nos repositórios do github.

Esses conectores nos permitem ampliar os aplicativos existentes adicionando um cache de objetos com um cluster durável. Aproveitando o poder do Couchbase, podemos evitar o Cold Cache, reduzir drasticamente a carga no seu RDBMS, fazer o auto-shard no cluster e fornecer um armazenamento de objetos durável.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Jennifer Garcia

Jennifer Garcia é gerente sênior de Web na Couchbase Inc. Como gerente do site, Jennifer tem a responsabilidade geral pelas propriedades do site, incluindo design, implementação, conteúdo e desempenho.

Deixe um comentário

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.