Você está na página 1de 6

Java Framework Portal

Artigos, Notcias e Tutoriais sobre o mundo Enterprise de Java

H o me

Ab o u t

Iniciando com Hibernate 3 utilizando Annotations


Po ste d o n 17 Ma rc h 2010

Se arch
search...

Subscribe
Posts RSS Comments RSS

Archive s
April 2010 March 2010

Cat e go rie s
Artigos O Hibernate um dos mais famosos frameworks de persistencia. Um framework de persistencia uma ferramenta que ajudar a persistir, ou seja, salvar, os seus dados em algum local, um banco de dados por exemplo. O Hibernate faz o mapeamento das classes de sua aplicao em tabelas e colunas do banco de dados. Com isso possvel ler e salvar objetos no banco de forma transparente. Nesse tutorial aprenderemos a configurar um projeto bsico com Hibernate e utilizaremos Annotations para fazer a configurao das classes. Reviews Tutoriais Uncategorized

O primeiro passo para fazermos um projeto com Hibernate, definir qual a estrutura de classes iremos utilizar. D epois, criaremos as tabelas de acordo com essas classes, e faremos o mapeamento no hibernate. Essas classes sero mapeadas em tabelas no banco de dados, o hibernate ento far a comunicao entre nossa aplicao e o banco de dados. Iremos utilizar o hibernate para fazer o mapeamento de classes para tabelas em um banco de dados, ento antes de trabalharmos na aplicao necessrio configurar algum SGBD para trabalhamos. Utilizaremos nesse tutorial o HSQLD B que um banco de dados em memria escrito em Java e vai facilitar o nosso trabalho.

1. Baixando o s paco t e s ne ce ssrio s


Para esse tutorial precisaremos baixar vrios arquivos: Hibernate Core (3.3.2 GA): contm o ncleo do hibernate Hibernate Annotations (3.4.0 GA): contm a API necessria para configurar as classes com annotations SLF4J (1.5.x): sistema de log utilizado pelo hibernate HSQLD B (2.0 RC 8): banco de dados que utilizaremos no nosso exemplo Os arquivos podem ser baixados nas seguintes URLs Hibernate Core: http://sourceforge.net/projects/hibernate/files/hibernate3/3.3.2.GA/hibernate-distribution-3.3.2.GA-dist.zip/download Hibernate Annotations: http://sourceforge.net/projects/hibernate/files/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.zip/download SLF4J: http://www.slf4j.org/dist/slf4j-1.5.8.zip HSQLD B: http://sourceforge.net/projects/hsqldb/files/alpha_beta/hsqldb_2_0_0_rc8/hsqldb-2.0.0-rc8.zip/download Se desejar baixar verses diferentes ser necessrio verificar a compatibilidade das verses das bibliotecas. No site do hibernate existe uma planilha com a compatibilidade de verses. A verso do HSQLD B no deve influenciar na compatibilidade.

A verso do SLF4J deve ser a mesma do JAR contido no hibernate core. Baixe todos os arquivos e extraia o contedo para uma pasta qualquer.

2. Exe cut ando o HSQLDB


O HSQLD B, tambm conhecido como HyperSQL, um banco de dados bem simples e no necessita instalao. Utilizaremos ele apenas para ser possvel experimentar o hibernate. Antes de executar a aplicao que iremos montar ser necessrio ligar o banco de dados. Para ligar o banco de dados basta executar o arquivo ru n Server.b at que est dentro da pasta /hsqldb/bin. Nenhuma configurao necessria. Caso o banco de dados no esteja rodando quando executar a sua aplicao, um erro como o seguinte ser lanado:

java.sql.SQLTransientConnectionException: java.net.ConnectException: Connection refused: connect

3. Criando um pro je t o e co nfigurando as biblio t e cas na aplicao


Crie um projeto no seu ambiente de desenvolvimento, importante que seja um projeto Java 1.5 ou superior pois utilizaremos annotations. Copie e adicione ao classpath as bibliotecas das seguintes pastas dos arquivos baixados anteriormente: \hsqldb-2.0.0-rc8\hsqldb\lib hsqldb.jar \hibernate-distribution-3.3.2.GA hibernate3.jar \hibernate-distribution-3.3.2.GA\lib\required (todas as bibliotecas) antlr-2.7.6.jar commons-collections-3.1.jar dom4j-1.6.1.jar javassist-3.9.0.GA.jar jta-1.1.jar slf4j-api-1.5.8.jar \hibernate-annotations-3.4.0.GA hibernate-annotations.jar \hibernate-annotations-3.4.0.GA\lib ejb3-persistence.jar hibernate-commons-annotations.jar \slf4j-1.5.8 slf4j-simple-1.5.8.jar Totalizando 12 arquivos JAR.

4. De finindo a e st rut ura


Vamos criar apenas uma classe nessa aplicao, para ver como o hibernate funciona. Crie uma classe Produto conforme o exemplo:

package org.javaframework.persistencia; import static javax.persistence.GenerationType.*; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Produto { @Id @GeneratedValue(strategy=SEQUENCE) Integer id; String nome;

public Produto(Integer id, String nome) { this.id = id; this.nome = nome; } public Produto(){ } public Integer getId() { return id; } public String getNome() { return nome; } public void setId(Integer id) { this.id = id; } public void setNome(String nome) { this.nome = nome; } }
Essa classe produto possui dois atributos. O primeiro o id , o id ser utilizado apenas como a chave primria do produto, no ter utilidade na nossa aplicao. Mas para o hibernate trabalhar, precisamos definir esse atributo na classe. Escolhemos a classe Integer para o atributo id , pois utilizaremos um sequencial numrico para os registros do banco. O outro atributo o nome do produto. Repare que foi criado um construtor sem nenhum parmetro, esse construtor obrigatrio (caso crie um outro construtor com vrios argumentos, como no exemplo). A configurao dessa classe est nas anotaes que utilizamos. A anotao @Entity define uma entidade, e deve ser utilizada em todas as classes que forem mapeadas pelo hibernate. A anotao @Id define o campo que ser o primary key no banco de dados. E a anotao @GeneratedValue indica que deve ser gerado um valor quando for salvar um novo produto a estratgia utilizada a SEQUENCE, que criar um novo sequencial para cada produto. D ependendo do banco de dados utilizado podem ser utilizadas outras estratgias, consulte a documentao do hibernate para mais informaes. At en o para o pacote da anotao @Entity, deve ser utilizado o pacote javax.persistence. Existe outra anotao com o mesmo nome no pacote org.hibernate.annotations mas no servir para mapear a classe, apenas para adicionar informaes extras. Se utilizar a anotao do pacote errado o hibernate lanar excees dizendo que a classe no foi mapeada.

5. Co nfigurando o hibe rnat e


Existem duas formas de configurar o hibernate, atravs de um XML ou de um arquivo de properties. Por sem mais simples, utilizaremos o arquivo de properties. Crie um arquivo chamado h ib ern at e.p ro p ert ies na sua aplicao, ele deve ficar na raiz dos fontes (SRC no eclipse por exemplo) e deve estar na raiz do classpath quando executar sua aplicao (se estiver utilizando um editor, basta colocar o arquivo na pasta raiz dos fontes). O arquivo deve ficar assim:

hibernate.connection.driver_class=org.hsqldb.jdbcDriver hibernate.connection.url=jdbc:hsqldb:hsql://localhost hibernate.connection.username=sa hibernate.connection.password= # Echo all executed SQL to stdout hibernate.show_sql=true # Drop and re-create the database schema on startup hibernate.hbm2ddl.auto=update
Nesse arquivo temos nas quatro primeiras linhas as informaes de conexo JD BC com o banco de dados. Configuramos tambm a exibio de queries e que o hibernate deve criar a estrutura do banco de dados automaticamente. Com esse arquivo o Hibernate estar configurado. Caso voc nao coloque o arquivo no lugar certo com o nome correto um erro como o seguinte pode acontecer: Exception in thread " main" org.hibernate.HibernateException: hibernate.dialect must be set when no Connection avalable. Vamos agora criar uma classe que utilizar o hibernate.

6. Exe cut ando um pro gram a co m o Hibe rnat e


Crie na sua aplicao a seguinte classe para podermos testar o hibernate:

package org.javaframework.persistencia; import java.util.List;

import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.classic.Session; public class HelloWorldHibernate { public static void main(String[] args) { AnnotationConfiguration config = new AnnotationConfiguration(); config.addAnnotatedClass(Produto.class); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); inserirProduto(session); listarProdutos(session); session.close(); sessionFactory.close(); } private static void inserirProduto(Session session) { Produto produto = new Produto(); produto.setNome("Shampoo"); Transaction tx = session.beginTransaction(); session.persist(produto); tx.commit(); System.out.println("Produto inserido"); } private static void listarProdutos(Session session) { List<Produto> produtos = session.createQuery("from Produto").list(); for (Produto p: produtos) { System.out.printf("%4d \t %s %n", p.getId(), p.getNome()); } } }
A classe HelloWorldHibernate apenas para efeito diddico, interessante voc estruturar a sua aplicao de maneira mais elegante. Nesse cdigo criamos um AnnotationConfiguration que permite a configurao de classes anotadas no Hibernate. Adicionamos a classe Produto para ser adicionada a configurao. O arquivo hibernate.properties ser lido automaticamente. Com essa configurao construimos um SessionFactory. Um SessionFactory serve para criamos sesses do hibernate. D evemos ter apenas um SessionFactory na aplicao mas podemos ter vrios Sessions (geralmente um para cada thread, ou um por requisio no caso de aplicaes web). Um SessionFactory como um D ataSource e um Session como um Connection. Temos dois mtodos bastante simples, um o inserirProduto, que salva um novo produto no banco de dados, inclusive utilizando uma transao. E um mtodo listarProdutos que lista todos os produtos encontrados no banco de dados. Se executarmos o programa veremos algo semelhante ao seguinte: Hibernate: call next value for hibernate_sequence Hibernate: insert into Produto (nome, id) values (?, ?) Produto salvo Hibernate: select produto0_.id as id0_, produto0_.nome as nome0_ from Produto produto0_ 10 Shampoo

Pronto! J pode agora utilizar o hibernate nos seus projetos. Veja a documentao de referencia no site http://www.hibernate.org para mais exemplos de consultas, operaes e mapeamentos.

C at eg o ry: Uncategorized

No responses yet. You could be the first!

Le ave a Re spo nse Name (required)

Mail (will no t be published) (required) Website

Submit Response

Recent Post s
O que Programao Orientada a Aspectos? Iniciando com Hibernate 3 utilizando Annotations Entendendo a plataforma Java, para leigos Spring 3, configurando beans com Annotations Hello World com Spring 3 para um projeto WEB PlayFramework Review

Tag Cloud

Met a
Java Framework Portal is proudly powered by WordPress and the SubtleFlux theme. Copyright Java Framework Portal Log in Valid XHTML XFN

bean bytecode compilador configurao crosscuting eclipse framework ide jar java jdk
advice annotations aop api aspect

jee

jme join point jre jse mquina virtual netbeans

pointcut produtividade

spring weaving web

Você também pode gostar