BT

A sua opinião é importante! Por favor preencha a pesquisa do InfoQ!

Novo Hibernate OGM traz mapeamento O/R para NoSQL

| por Eder Magalhães Seguir 0 Seguidores em 24 jun 2011. Tempo estimado de leitura: 2 minutos |

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

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

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT