Caros amigos,
Depois de um bom tempo correndo atrás de todas as dicas sobre Hibernate, consegui fazer uma aplicação funcionar, primeiro numa aplicação cliente/servidor e depois no ambiente web utilizando o TomCat.
Ferramentas utilizadas:
Java (jdk-1_5_0_06-windows-i586-p)
Eclipse (lomboz)
TomCat (jakarta-tomcat-5.5.10)
Hibernate 3.02
MySql 4.01
Vamos criar um novo projeto:
Clicar em File | new | project | TomCat project
Informe o nome: "SeuProjeto"
Em project contents, desmarque a opção “Use default”, clique em Browse e vá até a pasta webapps que fica dentro da pasta onde o TomCat foi instalado. Chegando nela, clique em “Criar nova pasta”, informe o nome dela “SeuProjeto” e clique direto em Finish.
Se voce clicar em Window | Show View | Navigator
O projeto deverá ter esta estrutura:
SeuProjeto
WEB-INF
classes
lib
src
work
O grande problema para fazer funcionar o Hibernate é a configuração das pastas, saber quem é quem e onde colocar…
Baixe o Hibernate 3.02 e descompacte-o em alguma pasta no seu computador
Pegue tambem o drive do Mysql (mysql-connector-java-3.1.12-bin.jar) e coloque-o na pasta lib Vamos distribuir os arquivos:
O arquivo hibernate3.jar coloque-o na pasta raz do projeto (SeuProjeto)
Sei que não precisamos de todos mas vamos pecar por excesso:
Pegue todos os arquivos .jar do hibernate, juntamente com driver MySql e coloque-os na pasta lib
Depois você poderá fazer uma limpeza, retirando alguns mas sempre lembrando de testar a aplicação…
Vamos informar ao projeto que existem novos JARs
Com o projeto selecionado acesse o Menu clicando em:
Project | properties | java Build Pach | na aba Libraries | no botão ADD JARs
Serão exibidas as pasta do seu projeto, localize as pastas onde estão os arquivos JAR´s, selecione-os e clique em OK.
Peque os arquivos hibernate.properties e log4j.properties e coloque-os na pasta classes do projeto
Abra o hibernate.properties com algum editor (notepad) e altere os parametros de conformidade com a configuração da sua conexão com a base de dados (é moleza…mas extremamente importante, sem isto jamais o sistema encontrará a base de dados)
É algo parecido com isto:
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost:3306/SeuProjeto
hibernate.connection.username = usuario
hibernate.connection.password = senha
Importante: Todos arquivos criados a partir do tutorial, salvar na pasta src
Numa segunda fase, trabalhando com uma estrutura de camadas (apresentação, negócio e dados) informarei onde cada arquivo deverá ficar, por padrão.
Criando de classe Usuario, UsuarioDAO e mapeamento da classe:
Criar o arquivo conforme abaixo e salvar como Usuario.java
public class Usuario {
private String usCod;
private String usSenha;
private String usNome;
private String usEmail;
public Usuario(){
}
public Usuario(String usCod, String usSenha, String usNome, String usEmail) {
this.setUsCod(usCod);
this.setUsSenha(usSenha);
this.setUsNome(usNome);
this.setUsEmail(usEmail);
}
//... IMPORTANTE: colocar os métodos GETs e SETs...
}
Vamos criar a Classe UsuarioDAO, responsavel pela conexao com a base de dados, salve-a como UsuarioDAO.java
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.hibernate.criterion.Expression;
public class UsuarioDAO{
private SessionFactory factory;
public UsuarioDAO() throws Exception{
factory = new Configuration().addClass(Usuario.class).buildSessionFactory();
}
public void UsInserir(Usuario us) throws Exception {
Session session = factory.openSession();
session.save(us);
session.flush();
session.close();
}
public void UsAlterar(Usuario us) throws Exception {
Session session = factory.openSession();
session.update(us);
session.flush();
session.close();
}
public void UsExcluir(Usuario us) throws Exception {
Session session = factory.openSession();
session.delete(us);
session.flush();
session.close();
}
}
Criando o mapeamento da classe para o Hibernate:
Criar o arquivo com os dados abaixo e salvar como Usuario.hbm.xml. Ele deverá ficar na mesma pasta do Usuario.java
Nota: O arquivo abaixo é um xml e para funcionar, retire o espaço que existe entre o sinal < e a linha de comando. Ele foi inserido para que o browser não interpretasse como tal.
< ?xml version="1.0"?>
< !DOCTYPE hibernate-mapping PUBLIC "-//Hibernate Mapping DTD 3.0//EN"
"hibernate-mapping-3.0.dtd">
< hibernate-mapping>
< class name="Usuario" table="tb_usuarios">
< id name="UsCod" column="USCOD" type="string">
< generator class="assigned"/>
< /id>
< property name="UsSenha" column="USSENHA" type="string"/>
< property name="UsNome" column="USNOME" type="string"/>
< property name="UsEmail" column="USEMAIL" type="string"/>
< /class>
< /hibernate-mapping>
Verifique que este xml será validado pelo arquivo hibernate-mapping-3.0.dtd.
Como voce ainda não tem este arquivo em sua máquina, faça uma busca rápida no professor google com o texto “hibernate-mapping-3.0.dtd” deverão surgir alguns links deste arquivo, quando voce clicar ele abrirá como um arquivo texto, peque o conteúdo e salve com o nome acima dentro da pasta raiz do seu projeto, no nosso caso, na pasta SeuProjeto.
Este recurso evita que o sistema não encontre o validador quando voce estiver rodando a plicação sem uma conexao com a web.
Caso voce não tenha criado a tabela na base de dados este script deverá criar a tabela.
Abra o admin do mysql e, dentro de uma nova query, cole o texto abaixo e execute-o:
/*
MySQL Data Transfer
Source Host: localhost
Source Database: seuprojeto
Target Host: localhost
Target Database: seuprojeto
Date: 24/11/2006 06:11:53
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for tb_usuario
-- ----------------------------
CREATE TABLE `tb_usuario` (
`USCOD` varchar(50) NOT NULL default '',
`USSENHA` varchar(50) default NULL,
`USNOME` varchar(50) default NULL,
`USEMAIL` varchar(50) default NULL,
PRIMARY KEY (`USCOD`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='InnoDB free: 3072 kB';
-- ----------------------------
-- Records
-- ----------------------------
INSERT INTO `tb_usuarios` VALUES ('well', '123', 'wellington marinheiro', 'wmarinheiro@hotmail.com');
Pronto !!! Até aqui temos:
Hibernate configurado dentro do projeto;
A Classe Usuario;
A Classe UsuarioDAO;
O Mapeamento;
A tabela no banco de dados;
Para testar esta fase, não vamos ainda para o TomCat, criaremos uma classe main para teste…
Copie o conteúdo abaixo em uma nova classe main e salve com o nome Teste.java, dentro da pasta src
public class Teste {
public static void main(String[] args) throws Exception {
try
{
String log = "login";
String senha = "abc";
String nome = "Rafael";
String email = "Rafael@email.com.br";
UsuarioDAO dao = new UsuarioDAO;
Usuario usuario = new Usuario(log,senha,nome,email);
dao.UsInserir(usuario);
System.out.println("Registro inserido com sucesso!!!");
}
catch(Exception e)
{
System.out.println("Não foi possivel, Erro: " + e.getMessage());
}
}
}
Fazendo um resumo dos arquivos criados e seus locais:
SeuProjeto:
hibernate3.jar
hibernate-mapping-3.0.dtd
WEB-INF
classes
hibernate.properties
log4j.properties
Usuario.hbm.xml (Este vem automaticamente, não precisa salvar aqui…)
[b]lib[/b]
...com todos os JARs trazidos do pacote Hibernate 3.2
[b] src[/b]
hibernate.properties
log4j.properties
UsuarioDAO.java
Teste.java
Usuario.java
Usuario.hbm.xml
Execute este arquivo e, se tudo estiver como descrito, voce terá inserido o primeiro registro numa base de dados utilizando o hibernate…
É pouco mas já é um começo, na proxima etapa, conforme prometido, vamos inserir registros num ambiente web, através de uma pagina jsp.
Este tutorial tambem poderá ser visto em http://www.livramento.yu.com.br/Hibernate.html
Tambem neste link, em breve estará disponiblizado um tutorial de como utilizar o MD5 em java, bem simples e bastante util, aguardem…
Espero ter ajudado,
Wellington Marinheiro
wmarinheiro@hotmail.com