domingo, 15 de abril de 2012

Utilização do Hibernate para Java - 1


O Hibernate é um framework para o mapeamento objeto-relacional (object-relational mapping) para a linguagem Java. Facilita o mapeamento das classes, atributos e relacionamentos entre classes entre o modelo de classes de uma aplicação e a sua implementação numa BD relacional. Para definição dos mapeamentos são usados ficheiros XML ou anotações Java.
O Hibernate serve de middleware entre os objetos Java e a BD relacional.

Neste artigo, e no próximo, vamos usar a versão Hibernate 3 para ilustrar, com um pequeno exemplo, a utilização do Hibernate num programa Java.

Como sistema de BD vamos usar o Oracle 10g.

Para começar, temos que criar as tabelas da base de dados. No artigo Exemplo de Aplicação Java Swing com BD Oracle - 1 é explicado este processo.
Vamos, neste artigo, mapear apenas a classe BOOK.


 Depois, usando o Netbeans ou outro IDE para Java, criamos uma nova aplicação Java:


Criamos um package para as classes que correspondem às tabelas da BD e criamos a classe Book:







Acrescentamos os atributos da classe (os nomes podem ser diferentes dos nomes das colunas da BD):


E acrescentamos os getters e setters dos vários atributos:




Como o valor da coluna ID da tabela BOOK é atribuida automaticamente na base de dados, vamos alterar o modo de acesso ao seu setter para private:


E criamos um construtor sem parâmetros na classe Book:


Vamos, agora, criar o ficheiro de mapeamento entre a classe Book e a tabela BOOK da BD.
Na mesma pasta da classe Book, criamos um ficheiro XML, chamado Book.hbm.xml, o qual vai conter os mapeamentos:


O ficheiro será restringido por um DTD, mas podemos acrescentar essa informação posteriormente:


Acrescentamos o conteúdo do ficheiro:


A sintaxe do ficheiro obedece ao DTD em http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd.

O elemento class faz o mapeamento entre a classe Java e a tabela da BD.
O elemento id faz o mapeamento de um atributo para a chave da tabela na BD.
O elemento property faz o mapeamento de um atributo não chave.

Precisamos, agora, de criar um ficheiro de configuração para o Hibernate, onde estarão os dados para conexão à base de dados, e a referência aos ficheiros de mapeamentos, entre outra informação.


Este ficheiro vai servir para configurar o objeto, hibernate.connection, de ligação à base de dados.
Contém, também, informação sobre os ficheiros de mapeamento.
Toda esta informação poderia, em alternativa, ser fornecida diretamente no código.

Agora,  vamos criar uma classe, HibernateUtil, que fornecerá uma instância singleton da classe SessionFactory. Essa instância servirá para criar um objeto de sessão sempre que for necessário aceder à base de dados. 
 Criamos um novo package:




Importamos as classes relevantes do Hibernate:


E declaramos, como static, o objeto sessionfactory do tipo SessionFactory, assim como a sua inicialização.


A invocação do método configure(), na instância new Configuration(), irá provocar a leitura do ficheiro de configuração hibernate.cfg.xml.


Vamos agora testar a ligação à BD usando o Hibernate. No ficheiro da classe que contêm o método main(), vamos acrescentar alguns imports:


E, no método main(), vamos acrescentar código para, transacionalmente, inserir um livro.


E depois, listar todos os livros:



 No próximo artigo, veremos como configurar e usar tabelas relacionadas por chave estrangeira.


Sem comentários:

Enviar um comentário