Artigo do tipo Tutorial
Recursos especiais neste artigo:
Conteúdo sobre Novidades
Autores: Marcos de Melo Siega e Everton Coimbra de Araújo
Suporte a Multi-Tenancy com Hibernate 4
Este artigo apresenta a funcionalidade, agregada à versão 4 do framework Hibernate, que provê mecanismos de suporte à arquitetura Multi-Tenant (vários clientes, logicamente isolados, utilizando os mesmos recursos físicos). Além de demonstrar os aspectos deste novo recurso, expõe-se uma contextualização sobre Hibernate e Multi-Tenancy, e então, ao final, implementa-se um exemplo prático utilizando esta nova funcionalidade.

Em que situação o tema é útil
Arquitetos de software encontram grandes desafios ao construir modelos arquiteturais SaaS (Software como serviço, do inglês Software as a Service) que apresentem uma infraestrutura de dados diferenciada, podendo não contar com servidores locais e infraestrutura própria, tendo que dispor todos os dados em um espaço compartilhado. Fatores como estes influenciam diretamente na capacidade de gerência, monitoramento e até mesmo na segurança dos dados.

Na medida em que a linguagem Java começou a ganhar destaque em ambientes corporativos, notou-se rapidamente que um tempo excessivo era gasto com a codificação de instruções SQL e com código JDBC capaz de interpretá-las.

O processo de desenvolvimento sofre influência direta deste aspecto negativo, pois há uma imensa queda de produtividade quando o desenvolvedor torna-se responsável por criar tais instruções manualmente, cabendo a ele tratar da mudança do paradigma orientado a objetos para o mapeamento objeto relacional e vice-versa. Este procedimento implica na necessidade de escrita de muitas linhas de código, criando um enorme obstáculo para o desenvolvedor, que ficará encarregado de tratar da persistência e recuperação de seus objetos utilizando uma linguagem de consulta estruturada.

A existência desta divergência entre o modelo orientado a objetos e o modelo relacional estimulou o desenvolvimento de mecanismos que contornassem este problema. Uma das principais ferramentas que surgiram, buscando resolver esta incompatibilidade, foi o Hibernate. Este framework aplica técnicas de mapeamento objeto relacional para resolver a dissonância entre os modelos.

Os frameworks de mapeamento objeto relacional, como o Hibernate, permitem mapear a representação dos dados de um modelo de objeto para um modelo de dados relacional e seu respectivo esquema de banco de dados, utilizando arquivos de configuração no formato XML e anotações Java.

Tais ferramentas de ORM, além de tratar da persistência e recuperação dos dados, devem garantir que as informações permaneçam íntegras e seguras, seja qual for a arquitetura de software adotada para a solução. Diante da constante necessidade de garantia destes fatores nos mais variados contextos, a versão 4 do Hibernate oferece suporte para uma das arquiteturas que tem ganhado bastante destaque, denominada Multi-Tenancy. Este novo recurso vai de encontro ao aumento do número de aplicações que estão sendo desenvolvidas voltadas para a nuvem, ou ambientes onde os recursos disponíveis são compartilhados.

Com base nisso, este artigo aborda as principais características deste recurso adicionado ao Hibernate, suas possíveis aplicações e um exemplo simples de como empregá-lo.

Hibernate

O Hibernate é um framework para mapeamento objeto relacional e consulta a bases de dados de código aberto e que é distribuído sob a licença LGPL. Ele assegura a transparência no processo de armazenamento de objetos em bancos de dados relacionais para o desenvolvedor, tirando dele a necessidade de se preocupar com a forma com que estes objetos serão persistidos ou recuperados. Esta transparência permite que o desenvolvedor concentre-se somente nas características e nos problemas a serem resolvidos pela aplicação.

O Hibernate possibilita que os desenvolvedores utilizem a convenção POJO (Objetos Simples em Java, do inglês Plain Old Java Objects) para construir a camada de modelo das aplicações. No entanto, ele não é apenas uma solução ORM, mas sim uma coleção de projetos que fornecem funcionalidades que vão além do mapeamento objeto relacional. Uma dessas funcionalidades é o suporte ao isolamento de dados para os vários clientes de uma aplicação, também conhecido como Multi-Tenancy, sobre o qual abordaremos a partir de agora.

O que é Multi-Tenancy?

Em uma aplicação que atende diversos clientes simultaneamente, é fundamental que uma possível falha na operação de um cliente não afete os demais. Desta maneira, em modelos onde os recursos computacionais são amplamente compartilhados, este cenário requer uma atenção especial.

Para as organizações, mecanismos que garantam a integridade dos dados, seu mais importante acervo, são extremamente importantes. Por este motivo, elas preferem manter seus softwares e bancos de dados instalados em hardwares pertencentes à própria organização, a ter que confiá-los a estruturas inadequadas de fornecedores de hospedagem.

Com o advento da computação em nuvem, e a tendência de novas aplicações operarem e serem disponibilizadas, cada vez mais, por esta tecnologia, modelos arquiteturais adequados que forneçam apoio à integridade dos dados se tornam imprescindíveis.

Diante deste cenário, onde a utilização dos recursos físicos é feita de maneira compartilhada e a garantia de integridade e segurança dos dados é vital, uma solução tem ganhado destaque por permitir o isolamento lógico dos recursos. Esta solução é o modelo chamado de Multi-Tenancy.

...
Quer ler esse conteúdo completo? Tenha acesso completo