Republicado de: http://javafree.uol.com.br/artigo/3721/Pequeno-Tutorial-sobre-Hibernate.html
Autor: Carlos Barreto (carlos_barretto@hotmail.com)
Em homenagem ao Luiz Carlos Metzger que me ajudou durante o
dia todo (17/02/2004) com as minhas dúvidas sobre o Hibernate vou filtrar tudo
o que foi feito no post em que discutimos:
Antes que você possa seguir os passos deste exemplo é
necessário que tenha baixado o Hibernate-2.1 no próprio www.hibernate.org e
importar os .jar da pasta hibernate\lib para a lib do seu projeto ou IDE ou
JVM.
Segue os 5 passos necessários para este pequeno exemplo de
persistência de dados:
1. criar a tabela no seu banco de dados onde os objetos vão
persistir;
2. criar o objeto cujo estado vai ser persistido;
3. criar um XML, que relaciona as propriedades do objeto aos
campos na tabela
4. criar um arquivo contendo as propriedades para que o
Hibernate se conecte ao bando de dados
5. criar a classe DAO que vai persistir seu objeto;
ANTES DE COMEÇAR LEMBRE-SE: TODOS ARQUIVOS DEVEM SER SALVOS
NA MESMA PASTA!
passo 1. criando uma tabela de amigos no MySQL, você pode
usar qualquer banco (afinal este é o Hibernate) mas eu preferi usar MySQL
1. create table
amigos(
2. nome
varchar(40) NOT NULL default '',
3. endereco
varchar(60) not null default '',
4. fone
varchar(11) default null,
5. cel varchar(11)
default null,
6. email
varchar(70) default null,
7. nascimento
datetime default null,
8. PRIMARY KEY
(`nome`)
9. );
passo 2. Criar uma classe Amigo com seus atributos (campos
do db) e métodos (set e get para cada atributo)
1. public class
Amigo {
2. private String nome;
3. private String endereco;
4. private String telefone;
5. private String celular;
6. private String email;
7. private java.util.Date nascimento;
8.
9. public Amigo() {
10. }
11.
12. public String getNome(){
13. return nome;
14. }
15.
16. public void setNome(String nome){
17. this.nome = nome;
18. }
19.
20. public String getEndereco(){
21. return endereco;
22. }
23.
24. public void setEndereco(String
endereco){
25. this.endereco = endereco;
26. }
27.
28. public String getTelefone(){
29. return telefone;
30. }
31.
32. public void setTelefone(String
telefone){
33. this.telefone = telefone;
34. }
35.
36. public String getCelular(){
37. return celular;
38. }
39.
40. public void setCelular(String
celular){
41. this.celular = celular;
42. }
43.
44. public String getEmail(){
45. return email;
46. }
47.
48. public void setEmail(String email){
49. this.email = email;
50. }
51.
52. public java.util.Date
getNascimento(){
53. return nascimento;
54. }
55.
56. public void setNascimento(java.util.Date
nascimento){
57. this.nascimento = nascimento;
58. }
59.
60. }
passo 3. Criar o Xml que irá relacionar os atributos com os
campos da tabela
salvar este arquivo como Amigo.hbm.xml
1. <?xml
version="1.0"?>
2. <!DOCTYPE
hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping.dtd">
3.
<hibernate-mapping>
4. <class name="Amigo"
table="amigos">
5. <id name="nome"
column="nome" type="string">
6. <generator
class="assigned"/>
7. </id>
8. <property
name="endereco" type="string"/>
9. <property name="telefone"
column="fone" type="string"/>
10. <property name="celular"
column="cel" type="string"/>
11. <property name="email"
type="string"/>
12. <property
name="nascimento" type="date"/>
13. </class>
14. </hibernate-mapping>
passo 4. Criar dois arquivos de propriedades para que o
Hibernate se conecte ao Banco de Dados e para exibir os passos em um LOG
Salvar este arquivo como hibernate.properties
1.
hibernate.dialect=net.sf.hibernate.dialect.MySQLDialect
2.
hibernate.connection.driver_class = org.gjt.mm.mysql.Driver
3.
hibernate.connection.url = jdbc:mysql://localhost:3306/test
4.
hibernate.connection.username = root
5.
hibernate.connection.password = root
e Salvar este arquivo como log4j.properties
1.
log4j.rootLogger=DEBUG, dest1
2.
3.
log4j.appender.dest1=org.apache.log4j.ConsoleAppender
4.
log4j.appender.dest1.layout=org.apache.log4j.PatternLayout
5.
log4j.appender.dest1.layout.ConversionPattern=%d %-5p %-5c{3} %x ->
%m%n
6.
7.
#log4j.appender.dest2=org.apache.log4j.RollingFileAppender
8.
#log4j.appender.dest2.File=bridge.log
9.
10.
#log4j.appender.dest2.MaxFileSize=100KB
11. # Keep one
backup file
12.
#log4j.appender.dest2.MaxBackupIndex=3
13.
14.
#log4j.appender.dest2.layout=org.apache.log4j.PatternLayout
15.
#log4j.appender.dest2.layout.ConversionPattern=%d [%t] %-5p %-5c{3}(%L) %x
-> %m%n
passo 5. Criar a classe DAO que vai persistir o objeto Amigo
1. import
java.util.List;
2. import
net.sf.hibernate.*;
3. import
net.sf.hibernate.cfg.Configuration;
4.
5. public class
AmigoDAO{
6.
7. private SessionFactory factory;
8.
9. public AmigoDAO() throws Exception{
10. factory = new
Configuration().addClass(Amigo.class).buildSessionFactory();
11. }
12.
13. public void insert(Amigo amigo) throws
Exception{
14. Session session =
factory.openSession();
15. session.save(amigo);
16. session.flush();
17. session.close();
18. }
19.
20. public java.util.List getList(String
condicao) throws Exception{
21. Session session =
factory.openSession();
22. List amigos =
session.find(condicao);
23. session.flush();
24. session.close();
25. return amigos;
26. }
27.
28. public Amigo retrieve(String pk) throws
Exception{
29. Session session =
factory.openSession();
30. Amigo amigo =
(Amigo)session.load(Amigo.class, pk);
31. session.flush();
32. session.close();
33. return amigo;
34. }
35.
36. public void delete(Amigo amigo) throws
Exception{
37. Session session =
factory.openSession();
38. session.delete(amigo);
39. session.flush();
40. session.close();
41. }
42. }
para testar todos os passos acima criaremos um arquivo que
eu chamei de TesteAmigo.java onde vamos instanciar as duas classes criadas e
coloca-las para funcionar, segue abaixo
1. public class
TesteAmigo {
2.
3. public static void main(String[] args)
throws Exception {
4.
5. try
6. {
7. Amigo amigo = new Amigo();
8. amigo.setNome("seu
nome");
9. amigo.setEndereco("seu
endereco");
10. amigo.setTelefone("seu
fone");
11. amigo.setCelular("seu
celular");
12. amigo.setEmail("seu
mail");
13. //amigo.setNascimento("data do
tipo Date");
14.
15. AmigoDAO dao = new AmigoDAO();
16. dao.insert(amigo);
17.
18.
19. }
20. catch(Exception e)
21. {
22. e.printStackTrace();//aqui vc vai
saber que xabu é esse.
23. }
24. }
25. }
Se seguirem os passos um a um poderão fazer a sua primeira persistência de dados utilizando o Hibernate