N style="mso-spacerun: yes">
Clique aqui para ler todos os artigos desta edição
Hibernate
O Framework que veio para simplificar. SQL nunca mais?
por Fernando Boaglio
Leituras obrigatórias:
SQL Magazine 2, artigo Hibernate: Mapeamento OOxSGBDR
SQL Magazine 5, artigo Mapeando um modelo de classes para um banco de dados relacional
Essa frase soa um tanto forte e parece algo difícil de acontecer hoje principalmente se a sua aplicação, como a maioria das aplicações em produção, utiliza um banco de dados.
Agora imagine uma camada intermediária entre a sua aplicação (cliente/servidor ou web) e o BD (banco de dados) que permita acessar as informações de seu BD sem usar SQL e, além disso, possibilite a troca por algum outro BD facilmente e sem alteração no código da aplicação (exemplo: trocar de MySQL para Oracle). O responsável por essa flexibilidade tecnológica é o Hibernate, um excelente framework que contempla soluções de mapeamento objeto-relacional (consultar artigo do prof. Geraldo Zimbrão na edição 5 da SQL Magazine) e persistência transparente de objetos, além de possuir uma API de fácil utilização e uma ótima documentação.
Neste artigo apresentaremos inicialmente as principais características do Hibernate. Em seguida veremos um exemplo prático de seu uso com as operações básicas de uma aplicação de cadastro e, como ele permite a troca de banco de dados para ilustrar as facilidades e flexibilidade desse framework.
Para ter um aproveitamento completo do que será apresentado, é necessário o conhecimento da linguagem Java e da ferramenta Eclipse (ver Nota 1), além de ter conhecimentos básicos de administração de banco de dados MySQL e Oracle.
Se alguns termos desta introdução são novos para você, consulte o Box 1 para uma breve explicação.
Nota 1. Escolha do Eclipse
A ferramenta Eclipse foi escolhida por ser muito eficiente e largamente utilizada pelos programadores Java.
Box 1
Hibernate, persistência e eficiência
O projeto Hibernate foi criado para reduzir o tempo que o programador gasta em suas tarefas relacionadas à persistência de dados no desenvolvimento de um software orientado a objetos interagindo com um banco de dados relacional. Ele proporciona uma solução aos ambientes Java de mapeamento objeto/relacional, abstraindo toda a parte de representação de tipo de dados através de arquivos XML. A estrutura de uma aplicação desenvolvida com Hibernate é ilustrada na Figura 1. Através dessa abstração, o Hibernate se torna o responsável por gerar o SQL necessário à sua aplicação, poupando o trabalho manual de programação da conversão dos dados relacionais para objetos.
A idéia do Hibernate é tornar totalmente transparente para o desenvolvedor o acesso ao banco de dados. Se você tem uma tabela chamada Clientes, você não trabalha diretamente com ela e nem abre conexão com o banco de dados. O que você faz são três passos: mapeia a tabela em um arquivo XML utilizado pelo Hibernate, gera as classes baseadas nos arquivos XML das tabelas e depois usa as rotinas do Hibernate para as operações de busca, cadastro ou alteração de dados. Para cadastrar um novo cliente, não é mais feita a operação de INSERT, e sim alterado os valores da classe Cliente que fará uso automaticamente das rotinas do Hibernate (criando uma sessão e usando o método save como veremos adiante).
A princípio parece ser mais trabalhoso, mas na realidade é muito prático e produtivo trabalhar usando meia dúzia de linhas de código do Hibernate do que ficar chamando no seu código rotinas de abrir conexão na base, ou carregar os valores de uma linha em uma variável, etc.
Figura 1. Framework Hibernate
Existem seis características que dão destaque ao Hibernate:
· Programação orientada a objetos: o Hibernate suporta características de uma linguagem orientada a objetos como herança, polimorfismo e composição. Isso ajuda muito no desenvolvimento, pois o programador não precisa se preocupar com o mapeamento para uma base relacional. Podemos implementar uma classe pai Pessoa que tem como filhos as classes PessoaFisica e PessoaJuridica e o Hibernate faz o mapeamento desses dados;
· Suporte para modelos de objetos específicos: o Hibernate possui uma rica variedade de mapeamentos para as variáveis compostas do Java: Map, Set, List, SortedMap, SortedSet, arrays e Collection;
· Sem aumento de tempo na construção da aplicação: não existe geração de código a mais ou processamento a mais para construir sua aplicação pelo fato de estar utilizando o framework. Ou seja, quando o seu software é compilado, não é necessária a recompilação do Hibernate. Alguns frameworks necessitam ser recompilados junto com a sua aplicação para funcionar;
...