BT

Novo Hibernate OGM traz mapeamento O/R para NoSQL

por Eder Magalhães em 24 Jun 2011 |

A JBoss anunciou o mais novo integrante da família Hibernate, o Hibernate OGM. Com o OGM, sigla para Object/Grid Mapper, é possível persistir dados a partir de aplicações Java em uma base de dados NoSQL, implementando a camada de persistência através do mapeamento com a Java Persistence API (JPA).

Segundo a JBoss, o Hibernate OGM favorece o uso de tecnologias NoSQL em projetos construídos sobre um modelo de domínio (domain model centric), por profissionais que não possuem grande experiência em ferramentas NoSQL. O projeto simplifica o modelo de programação de NoSQL, seguindo um modelo de persistência popular entre os desenvolvedores Java, JPA.

O Hibernate OGM define dois contratos para garantir as operações de persistência, as interfaces Persister e Loader. Através de implementações dessas duas interfaces, o OGM utiliza o Hibernate Core para realizar as operações CRUD (Criação, Leitura, Atualização, Apagamento) em entidades. Além do Hibernate Core, o Hibernate Search e o Infinispan são outras ferramentas utilizadas pelo Hibernate OGM. A figura a seguir (extraída da documentação do OGM) mostra uma visão da arquitetura do projeto:

Entre os conceitos básicos adotados pelo Hibernate OGM estão:

  • As entidades são armazenadas como tuplas, especificamente uma estrutura em Map<String, Object> em que a chave é o nome da coluna e o valor é o respectivo conteúdo.
  • Suporte aos seguintes tipos de relacionamento entre entidades: @ManyToOne, @OneToOne, @OneToMany e @ManyToMany. Este último só funciona em relacionamentos unidirecionais.
  • É mantido o conceito de chave primária para todas as entidades, além da chave estrangeira para relacionar entre entidades.
  • É isolada a camada de modelo (os Pojos persistentes) da camada de armazenamento (datastore).

A abstração entre os Pojos persistentes e o datastore do OGM define um isolamento entre a estrutura em que os dados são armazenados e as classes de modelo. Essa estratégia traz benefícios como a possibilidade de mudar a estrutura da classe sem se preocupar em migrar os dados gerados a partir de uma versão anterior da classe.

Outro benefício, proveniente do uso de um grafo é que, por maior que seja o volume de objetos relacionados não haverá problemas de armazenamento nessa estrutura. O diagrama a seguir (também da documentação) demonstra a estrutura da base NoSQL e como o Hibernate OGM organiza as informações:

Na versão atual do projeto, a linguagem de consultas do JPA, a JPQL, não é suportada. Mas consultas simples podem ser realizadas através da API do Hibernate Search. E, por enquanto, a única ferramenta NoSQL suportada é o Infinispan.

Os próximos passos planejados para Hibernate OGM são:

  • Suporte para outros mecanismos de armazenamento chave/valor.
  • Suporte a outras ferramentas NoSQL.
  • Desnormalização declarativa.
  • Suporte a JPQL, incluindo consultas complexas envolvendo relacionamentos.

É possível fazer o download do Hibernate OGM na página de distribuição ou no repositório do Maven. Já existe uma documentação de referência online, além do guia de instalação, o javadoc e o wiki do projeto. Durante o keynote do JBoss World 2011 foi apresentado uma demo do Hibernate OGM. É possível acessar o vídeo dessa apresentação ou um post no blog do Hibernate que resume o keynote.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.