Você está na página 1de 19

Criando um Projeto Web com Hibernate e Eclipse Kepler

O processo de mapear objetos Java para tabelas em Banco de Dados e vice-versa chamado de "Object-Relational Mapping" (ORM) ou Mapeamento Objeto-Relacional. A Java Persistence API (JPA) prove as facilidades do mapeamento objeto/relacional para os desenvolvedores Java gerenciarem informaes relacionais em aplicaes Java. A JPA uma das possibilidades para o Mapeamento Objeto-Relacional. JPA uma especificao e atualmente vrias implementaes esto disponveis, entre elas Hibernate, EclipseLink e Apache OpenJPA. JPA tambm permite ao desenvolvedor mapear, armazenar, atualizar e recuperar informaes de uma base de dados relacional para objetos Java e o contrrio tambm permitido. Na especificao da JPA tambm temos a definio de alguns conceitos importantes como: Entidades que so os mapeamentos das tabelas do Banco de Dados, Atributos que equivalem as colunas do Banco de Dados, Relacionamentos entre entidades atravs de anotaes como @OneToOne, @OneToMany, @ManyToOne, @ManyToMany, EntityManager que responsvel por prover operaes do Banco de dados e tambm para o Banco de Dados, encontrar objetos, persisti-los, remove-los, etc, e por fim temos tambm a Unidade de Persistncia (Persistence Units) que define as propriedades de conexo com o banco de dados.
Hibernate

O Hibernate uma ferramenta ORM open source e a lder de mercado. A integrao do Hibernate com uma aplicao Java bastante simples e fcil. Olhando primeira vista a distribuio do Hibernate possui diversas bibliotecas. Mas para comearmos a desenvolver com Hibernate precisamos configurar o banco de dados, arquivos de mapeamento ou anotaes, arquivos de configuraes e objetos POJOs da nossa aplicao. O Hibernate pode ser usado por uma aplicao Java diretamente, ou podemos acessar Hibernate atravs de outro framework. Podemos chamar o Hibernate atravs de uma aplicao Swing, Servlet, Portlet, JPS ou qualquer outra aplicao Java que tenha acesso a uma Base de Dados. O Hibernate possui suporte para Java Management Extensions (JMX), J2EE Connector Architecture (JCA), e Java Naming and Directory Interface (JNDI). Com JMX podemos configurar o Hibernate enquanto ele est rodando. Hibernate tambm pode ser publicado (deployed) como um JCA Connector e ainda usar JNDI para obter uma fbrica de sesso do Hibernate. Por fim, Hibernate usa drivers Java Database Connectivity (JDBC) para acessar base de dados relacionais. Vale ressaltar que Hibernate no sobrepe o JDBC como uma camada de conectividade de base de dados e sim situa-se um nvel acima do JDBC.

Configuraes Necessrias para o Hibernate

Para integrarmos a nossa aplicao com Hibernate necessitamos usar algumas bibliotecas Java. A primeira delas o arquivo jar para o JDBC, devemos procurar uma que seja especifica para o nosso banco de dados relacional. Por exemplo, o postgre possui um jar JDBC especfico, o Oracle possui outro e assim por diante. Cada Banco de dados possui seu prprio JAR exclusivo. O Hibernate no inclui drivers JDBC, por isso necessitamos obter esse JAR como um download separado, provavelmente encontrado diretamente no site do fabricante. Aps conseguirmos esse JAR especfico da nossa base de dados basta colocarmos junto com o arquivo hibernate3.jar na nossa aplicao. Essa biblioteca possui os pacotes org.hibernate que necessitamos e tambm vrios DTDs e arquivos XML. O Hibernate tambm requer vrias bibliotecas alm do hibernate3.jar. Essas bibliotecas esto includas no diretrio lib/required da instalao do Hibernate 3.5. Alm das bibliotecas encontradas em lib/required, o Hibernate tambm usa a biblioteca JPA, na qual est includa no diretrio lib/jpa. O Hibernate tambm requer uma biblioteca de bytecode para funes. Existem duas bibliotecas bytecode com a distribuio do Hibernate - javassist e CGLib. Com o Hibernate 3.5, necessitamos usar um ou o outro. Para o nosso exemplo usaremos o javassist. Existem vrias bibliotecas opcionais includas no Hibernate 3.5. Se construirmos o Hibernate a partir do cdigo, algumas dessas so necessrias para o Hibernate compilar. Outras bibliotecas proveem pools de conexes, funcionalidades de cache, e API JCA. Por fim, o Hibernate tambm requer um conjunto de configuraes que so frequentemente colocadas num arquivo de propriedades chamado hibernate.properties ou como um arquivo XML chamado hibernate.cfg.xml. Recomenda-se a utilizao do arquivo em formato XML.
Criando um Projeto Web com Hibernate

Abaixo iremos criar um novo projeto Web no Eclipse utilizando Hibernate 3.5. Assegure que o seu Banco de Dados esteja instalado e com uma tabela msgteste criada. Alm disso, crie duas colunas nessa tabela chamadas id (chave primria) e uma coluna mensagem do tipo text ou varchar. Voltando para a criao do nosso projeto Web primeiramente devemos criar um projeto clicando com o boto direito do mouse em Project Explorer e escolhendo o menu New > Other conforme ilustra a imagem abaixo:

Figura 1: Criando um novo projeto no Package Explorer. Na prxima janela que aberta selecione Web e Dynamic Web Project para criarmos um novo projeto Web. Por fim selecione o boto Next.

Figura 2: Criando um projeto Web no Eclipse. Na prxima tela coloque o nome do projeto e d um Next para prosseguir.

Figura 3: Configurando as propriedades do projeto. Na prxima tela deixamos como est e clicamos em Next para prosseguir.

Figura 4: Configurando detalhes do projeto. Por fim d um Finish na prxima tela.

Figura 5: Configurando detalhes finais do projeto. Agora podemos notar que um novo projeto foi criado na janela Project Explorer. Com o projeto criado j podemos fazer as configuraes para acessarmos nossa base de dados e manipularmos a base com o Hibernate. A figura abaixo demonstra o projeto criado na janela Project Explorer.

Figura 6: Projeto criado na janela Project Explorer. Primeiramente vamos configurar o Hibernate na pasta lib do nosso projeto. Extraia o zip que baixamos anteriormente do Hibernate 3.5 e copie tudo que estiver nas pastas lib/jpa, lib/bytecode/javassist e lib/required para a pasta WebContent/WEB-INF/lib do projeto. Tambm no esquea de colocar o jar hibernate3.jar que est na pasta principal do Hibernate (antes da lib).

Figura 7: Pasta lib com os jars do Hibernate. Agora que j adicionamos as bibliotecas do Hibernate devemos adicionar o arquivo de propriedades no formato XML (hibernate.cfg.xml) conforme mostra a listagem abaixo. Listagem 1: Arquivo hibernate.cfg.xml com as propriedades configuradas.
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">org.postgresql.Driver</proper ty> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/Banco TestePostgre</property> <property name="hibernate.connection.username">username</property>

<property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> <property name="connection.password">senhadefault</property> <property name="show_sql">true</property> <mapping class="com.exemplo.entidade.Mensagem"/> </session-factory> </hibernate-configuration>

Podemos notar acima que estamos nos conectando a um banco postgre 8 e configuramos o nome da base de dados e seu nome de usurio e senha. Na propriedade configuramos as entidades que sero mapeadas da base de dados para os nossos objetos java e vice-versa. Tambm no podemos esquecer de adicionar a biblioteca do postgre que fornecido pelo prprio provedor. Portanto, feito download do driver de acesso ao banco de dados ela deve ser adicionada na pasta lib do nosso projeto. A figura abaixo mostra a imagem do nosso projeto com o driver adicionado na pasta lib e o arquivo de propriedades adicionado.

Figura 8: Adicionado o arquivo de propriedade e o driver de acesso ao postgre. Agora vamos criar um novo pacote para adicionarmos as nossas classes de acesso ao Banco de Dados usando Hibernate e o mapeamento de uma tabela do Banco de Dados. Clique com o boto direito do mouse em cima da pasta src do projeto e seleciona a opo New e por fim Package conforme ilustrado na figura abaixo:

Figura 9: Criando um novo pacote no Eclipse. Digite o nome do pacote como com.exemplo.entidade que o pacote onde ficaro as nossas entidades mapeadas.

Figura 10: Configurando um pacote. Por fim, clique em Finish. Crie tambm outro pacote chamado com.exemplo.acessobd seguindo o mesmo processo descrito acima. Dentro do pacote com.exemplo.entidade crie a classe Mensagem abaixo que a tabela msgteste que est criada no nosso Banco de dados no postgre. Listagem 2: Classe Mensagem mapeando a tabela msgteste do banco de dados.
package com.exemplo.entidade; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="msgteste", schema="public") public class Mensagem implements java.io.Serializable {

@Column(name="\"msg\"") private String msg; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="\"id\"") private Integer id;

public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } }

Podemos notar que essa tabela tambm possui duas colunas chamadas id e msg sendo que id uma chave primria. Outra situao a notar a presena de \ seguido de aspas em @Column(name="\"msg\""). Isso se faz necessrio apenas quando usamos um Banco de dados postgre, por algum motivo interno ele requer que se escape as aspas. Normalmente teramos apenas um mapeamento como abaixo:
@Column(name="msg") private String msg;

Agora devemos criar uma classe dentro do pacote com.exemplo.acessobd que far o acesso a base de dados atravs do Hibernate. Crie a classe abaixo: Listagem 3: Classe de acesso ao Banco de Dados atravs do Hibernate.
package com.exemplo.acessobd; import java.util.List;

import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import com.exemplo.entidade.Mensagem;

public class TesteBanco { public TesteBanco() { } public void teste() { List<Mensagem> list= null; SessionFactory sessions = new AnnotationConfiguration().configure().buildSessionFactory(); Session session = sessions.openSession(); try { session.beginTransaction(); list = session.createQuery("select msg from Mensagem msg").list(); session.getTransaction().commit(); for (Mensagem msg : list) { System.out.println(msg.getMsg()); } } catch ( HibernateException e ) { if ( session.getTransaction() != null ) session.getTransaction().rollback(); } finally { session.close(); } } }

Podemos notar que existem alguns erros na nossa classe. Para concertar esses problemas devemos adicionar as classes do Hibernate no classpath do nosso projeto. Para isso clique com o boto direito do mouse em cima do nome do nosso projeto e clique em Propriedades. Por fim, clique em Java Build Path.

Figura 11: Acessando as propriedades do Projeto.

Figura 12: Acessando o Java Build Path do projeto. Por fim, selecione Add Jars... e adicione as bibliotecas da pasta lib e clique em OK conforme ilustra a figura abaixo:

Figura 13: Adicionando as bibliotecas no classpath do projeto. Note que agora os erros no aparecem mais. Agora vamos criar uma simples pgina index.jsp que far o acesso a nossa classe de teste criada e exibir as mensagens armazenadas no Banco de Dados. Segue abaixo o cdigo da pgina index.jsp que deve ser colocada na pasta WebContent. Listagem 4: Pgina de teste para nosso projeto web.
<%@page import="com.exemplo.acessobd.TesteBanco"%> <html> <body> <% TesteBanco testeBanco = new TesteBanco(); testeBanco.teste(); %> </body>

</html>

No esquea de ter instalado o Apache Tomcat 7. Para acessar o nosso projeto digite localhost:8080/ProjetoHibernate/index.jsp Caso o seu projeto reclame do slf4j tente baixar a verso slf4j-api-1.7.5.jar e tente restartar o servidor novamente. Aps a execuo da url no browser verifique o console do eclipse e veja se as mensagens do Banco de dados foram listadas. Assim terminamos o acesso ao Banco de dados usando o Hibernate. Muitas funcionalidades e caractersticas do Hibernate sero vistos nos artigos posteriores, porm j demos um grande passo configurando o acesso ao nosso Banco de dados usando o Hibernate.
Concluso

Neste artigo vimos o que JPA e Hibernate. Tambm configuramos um projeto web desde o inicio e acessamos uma base de dados postgre utilizando o Hibernate 3.5.
Bibliografia 1. Jeff Linwood and Dave Minter. An introduction to persistence using Hibernate 3.5, Second Edition. Apress. 2. Steve Perkins. Hibernate Search by Example: Explore the Hibernate Search system and use its extraordinary search features in your own applications. Packt Publishing.

Leia mais em: Criando um Projeto Web com Hibernate e Eclipse Kepler http://www.devmedia.com.br/criando-um-projeto-web-com-hibernate-e-eclipsekepler/29168#ixzz2hytHRAis

Você também pode gostar