Opa! Tudo bom, pessoal?
Resolvi escrever um artigo falando sobre como
criar uma persistência de dados usando Hibernate no Eclipse, tendo o
framework JSF como view. Vejam que não é tão complicado assim, o
chato é configurar o Hibernate no Eclipse.
Let´s
go…
Sobre
a aplicação
Bem, a
ideia aqui é apresentar a vantagem de usar o framework Hibernate
para persistência de dados, então vamos fazer uma aplicação bem
simples e ficaremos mais focados na parte do Hibernate. A nossa
aplicação tem a função do nome de um visitante em uma base de
dados (MySQL).
Sobre
o Hibernate, para não duplicar o que já tem na net, lá vai a
“reutilização da informação” 😉 – O
que é hibernate?
Download
Hibernate – ponto importante, nesse final de semana fiquei
tentando colocar a última versão do hibernate para funcionar, mas não tive sucesso. A última versão veio faltando uns .jars e até
agora não descobrir o motivo, estou pesquisando e verificando se não
é um problema local na hora de descompactar o pacote. Em função
disso, usei uma versão mais antiga, a 3.2.1.ga, e no link anterior
disponibilizei apenas os .jars necessários.
Download
Hibernate versão 3.3.2.GA – essa é a ultima versão que
consta no site Hibernate.org no momento em que escrevo o artigo.
Porém, não a estamos usando.
Requisitos:
- Eclipse
Galileo (versão em uso para este artigo) - JDK
1.5 - Hibernate
3.2.1 (versão em uso para este artigo) - Jboos
tools no Eclipse - MySql
(vamos considerar que criou o DataBase e Table no BD) - TomCat
5.5/Superior
Alguns
problemas:
Para
adiantar, identifiquei alguns “problemas” que podem tirar você
do sério.
Quando você cria um Library no Eclipse e o adiciona ao seu projeto, os arquivos .jars não vão para a pasta
lib. E, se você tentar adicionar .jars diretamente, também
não vai parar no diretório lib do projeto. Não sei por que o
Eclipse não faz isso, desde o dynamic
web project há esse problema.
Em função disso, é
necessário copiar os .jars do Hibernate para a pasta lib
do seu projeto. Abaixo, uma imagem dos .jars necessário para que o
hibernate funcione. Não se esqueça do arquivo .jar do MySql.

Iniciando
01. Crie um projeto JSF PROJECT
02. Agora crie uma página index.jsp com o código a seguir
03. Crie uma pagina sucesso.jsp com o código abaixo.
< %@ taglib uri="http://java.sun.com/jsf/html" prefix="h" % >;<br />< %@ taglib uri="http://java.sun.com/jsf/core" prefix="f" % >;04. Crie uma estrutura conforme abaixo no seu projeto. A seguir vamos apresentar os codes de cada classe, não se preocupe.

05. Agora vamos criar os arquivos de configuração e conexão com o BD via Hibernate. Para isso, crie dois arquivos no formato .xml (hibernate.cfg.xml e visitantes.hbm.xml), estes devem estar dentro de Source. Sua estrutura deve estar conforme abaixo:

Pronto, terminamos a configuração do ambiente de desenvolvimento, agora vamos à parte mais interessante.
Desenvolvimento
01. Precisamos criar um Bean para nossa aplicação, então, abra o arquivo Visitante.java e deixe conforme o code a seguir:
public class Visitante {<br />private String nome;<br />private int id;<br />public int getId() {<br />return id;}<br />public void setId(int id) {<br />this.id = id;}<br />public String getNome() {<br />return nome;}<br />public void setNome(String nome) {<br />this.nome = nome;}}02. Agora vamos criar o controlador JSF. Para isso, abra o arquivo VisitanteControler.java e deixe conforme o code abaixo:
import br.com.bean.Visitante;<br />import br.com.dao.InterfaceDAO;<br />import br.com.dao.VisitanteDAO;<br />//classe controladora JSF<br />public class VisitanteControler {<br />private Visitante visitante;<br />public VisitanteControler() {<br />visitante = new Visitante(); }<br />public Visitante getVisitante() {<br />return visitante; }<br />public void setVisitante(Visitante visitante) {<br />this.visitante = visitante;}<br />public String salvar(){<br />InterfaceDAO visitantedao = new VisitanteDAO();<br />visitantedao.salvar(visitante);<br />return "salvar";}}03. O objetivo agora é configurar e fazer o mapeamento com Hibernate. Para isso, atualize o arquivo hibernate.cfg.xml conforme o código a seguir:
< !-- CONFIGURANDO O HIbernate -- ><br /><br />org.gjt.mm.mysql.Driver<br />jdbc:mysql://localhost/livraria<br />camilo<br />bahia<br />< !-- USADO PELO HIBERNATE PARA SE COMUNICAR COM O BD -- ><br />org.hibernate.dialect.MySQLDialect<br /> <!-- pega a tabela -->04. Agora atualize o arquivo visitantes.hbm.xml.
< !-- ARQUIVO DE QUE FAZ O MAPEAMENTO COM BD/TABELA --><br /><br />< hibernate-mapping><br />< !-- INFORMANDO O LOCAL DO BEAN E O NOME DA TABELA NO BD -- ><br /> < class name="br.com.bean.Visitante" table="visitante"><br /> < !-- CHAVE PRIMARIA DA TABELA -- ><br /> <id column="id" name="id" type="integer"><br /> <generator class="assigned"/><br /> </id><br /> <property column="nome" name="nome" type="string"/><br /> </class><br /></hibernate-mapping>05. Abra o arquivo ConexaoHi.java e insira os códigos a seguir:
<br />import org.hibernate.Session;<br />import org.hibernate.SessionFactory;<br />import org.hibernate.cfg.Configuration;<br />//classe que conecta ao Hibernate<br />public class ConexaoHi {<br />//variavel que armazena os mapeamentos e configuracoes do Hibernate<br />private static final SessionFactory sessionFactory;<br />private static final ThreadLocal threadlocal = new ThreadLocal();<br />static{<br />try{<br />sessionFactory = new Configuration()<br />.configure("hibernate.cfg.xml")<br />.buildSessionFactory();<br />/*recebemos a configuracao do arquivo hibernate.cfg.xml que possui<br />*dados da conexao<br />* chamamos o metodo buildSessionFactory que retorna um objeto<br />* session, que estabelece uma sessao de comunicacao com o BD<br />* atraves de uma conexao JDBC */<br />}catch (Throwable e) {<br />throw new ExceptionInInitializerError(e);}<br />}<br />/* esse metodo associada cada sessao a um objeto, permitindo que<br /> * cada sessao abra um processo concorrente */<br />public static Session getInstance(){<br />Session session = (Session) threadlocal.get();<br />session = sessionFactory.openSession();<br />threadlocal.set(session);<br />return session;}}06. Atualize o arquivo VisitanteDAO.java.
import org.hibernate.HibernateException;<br />import org.hibernate.Session;<br />import org.hibernate.Transaction;<br />import br.com.bean.Visitante;<br />import br.com.util.ConexaoHi;<br />//com hibernate<br />public class VisitanteDAO implements InterfaceDAO {<br />private Session session;<br />//metodo responsavel por salvar os dados no BD<br />public void salvar(Visitante visitante){<br />session = ConexaoHi.getInstance();//cria uma sessao<br />Transaction tx = null; //permite transacoes no BD<br />try{<br />tx = session.beginTransaction();<br />session.save(visitante);//grava no BD<br />tx.commit();//transacao efetuada<br />}catch (HibernateException e) {<br />System.out.println("deu merda aqui");<br />e.printStackTrace();<br />//tem o objetivo de desfazer a transcao em caso de erro<br />tx.rollback();<br />}finally{<br />session.close();}}}07. Seu arquivo InterfaceDAO.java deve estar assim:
import br.com.bean.Visitante;<br />public interface InterfaceDAO {<br />public abstract void salvar(Visitante visitante);<br />}08. Não podemos nos esquecer de configurar o arquivo faces-config.xml. Para isso, deixe conforme o code a seguir :
<managed-bean><br /> <managed-bean-name>visitanteControler</managed-bean-name><br /> <managed-bean-class>br.com.controller.VisitanteControler</managed-bean-class><br /> <managed-bean-scope>session</managed-bean-scope><br /> </managed-bean><br /> <navigation-rule><br /> <from-view-id>/form.jsp</from-view-id><br /> <navigation-case><br /> <from-outcome>salvar</from-outcome><br /> <to-view-id>/sucesso.jsp</to-view-id><br /> </navigation-case><br /> </navigation-rule><br /></faces-config>09. Agora atualize os arquivos .jsp, começando pelo form.jsp.
< %@ taglib uri="http://java.sun.com/jsf/html" prefix="h" % >;<br />< %@ taglib uri="http://java.sun.com/jsf/core" prefix="f" % >Pronto, terminamos o desenvolvimento, chegou a hora de testar.
Testando
01. Para testar a aplicação, clique com o botão direto em cima do projeto e escolha Run As Run on Server.
02. Aguarde que o browser interno do eclipse seja carregado (por padrão será ele). Você verá a seguinte tela:

03. Cadastre um visitante.


04. Verificando o visitante no BD.

Fico por aqui e espero que vocês tenham gostado do artigo.
Ficou um pouco longo, mas eu espero tenha sido produtivo e que vocês tenham conseguido ver a essência e as vantagens de usar um framework como Hibernate para persistência de dados.
Aproveitando este post, fica aqui um presente para os leitores do iMasters que estão se preparando para tirar a certificação SCJP. Recentemente publiquei o livro Guia do Exame SCJP (veja aqui a resenha) e você que leu esse artigo acabou de ganhar um desconto de 30% para comprá-lo diretamente no site da editora Ciência Moderna! Basta usar o cupom V00014. O valor do livro é R$ 49,00 e, com o desconto, ele fica por R$ 34,30. Aproveite para estudar bastante, sem correr o risco de ficar com o orçamento apertado!
Abraços e até o próximo!







