Escolar Documentos
Profissional Documentos
Cultura Documentos
H o me
Ab o u t
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.
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.
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.
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.
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
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
pointcut produtividade