Como iniciar um projeto com o Hibernate - Página 1 de 17
Como iniciar um projeto com o Hibernate
Conteúdo 1 – Preparação e Downloads necessários .......................................................... ................................................................................................ ...................................... 2 2 – Iniciando um projeto no Eclipse ....................................................................................................... ....................................................................................................... 3 3 – Criando e anotando classes ............................................................................................................. ............................................................................................................. 11 4 – Configurando o Hibernate................................................................ ............................................................................................................... ............................................... 13 5 – Configurando o Log4j ...................................................................... ..................................................................................................................... ............................................... 14 6 – Efetuando algumas operações ................................................................................... ......................................................................................................... ...................... 15
Como iniciar um projeto com o Hibernate - Página 2 de 17
1 – Preparação e Downloads necessários Antes de iniciar faça o download do Hibernate em www.hibernate.org. Faça o download dos seguintes projetos: - Hibernate Core - Hibernate Annotations - Hibernate Entity Manager Vamos precisar também de um banco de dados, pode ser qualquer um, mas neste exemplo vou uti lizar o Mysql que pode ser encontrado em www.mysql.com. Após efetuar o download do banco e instalar, precisamos também do Driver JDBC do banco. O driver JDBC do Mysql pode ser encontrado na sessão downloads em “Drivers and Connectors”. Descompacte os arquivos dos três projetos do Hibernate cada um em uma pasta separada:
Como iniciar um projeto com o Hibernate - Página 3 de 17
2 – Iniciando um projeto no Eclipse Neste exemplo vamos utilizar o Eclipse que pode ser encontrado em www.eclipse.org. Abra o Eclipse e vá para a visão Java:
Vá no menu “File – New – Java Project”:
Como iniciar um projeto com o Hibernate - Página 4 de 17 Vamos chamar o projeto de “TesteHibernate” e depois clique no botão “Finish”:
Como iniciar um projeto com o Hibernate - Página 5 de 17 Seu Eclipse deve se parece com este:
Dentro do diretório “src” é que irão ficar os pacotes, códigos Java e alguns arquivos de conf iguração do Hibernate. O próximo passo é adicionar as libs do Hibernate no projeto. Para isso clique com o botão direito do mouse sobre o projeto e vá em “Properties”:
Como iniciar um projeto com o Hibernate - Página 6 de 17 Clique em “Java Build Path” e depois na aba “Libraries” e adicione os Jars do Hibernate com o botão “Add External JARs”:
Como iniciar um projeto com o Hibernate - Página 7 de 17 Navegue até o diretório do “Hibernate-distribution-3.3.1GA/libs/required ” e adicione todos os Jars desta pasta:
Clique novamente em “Add External JARs”, navegue até o diretório do “ Hibernatedistribution-3.3.1GA ” e adicione o Jar “ hibernate3.jar ”:
Como iniciar um projeto com o Hibernate - Página 8 de 17 Clique novamente em “Add External JARs”, navegue até o diretório do “ hibernateannotations-3.4.0.GA/lib ” e adicione os JARs da figura abaixo:
Clique novamente em “Add External JARs”, navegue até o diretório do “ hibernateannotations-3.4.0.GA ” e adicione o JAR da figura abaixo:
Como iniciar um projeto com o Hibernate - Página 9 de 17 Clique novamente em “Add External JARs”, navegue até o diretório do “ hibernateentitymanager-3.4.0.GA ” e adicione o JAR da figura abaixo:
Clique novamente em “Add External JARs”, navegue até o diretório do “ hibernateentitymanager-3.4.0.GA/lib/test ” e adicione os JARs da figura abaixo:
Como iniciar um projeto com o Hibernate - Página 10 de 17 Clique novamente em “Add External JARs”, navegue até o diretório onde está localizado o driver JDBC do banco de dados:
Pronto (“uffffaaaaa”). Seu projeto deve ter todos os JARs da lista abaixo, clique em OK:
Como iniciar um projeto com o Hibernate - Página 11 de 17
3 – Criando e anotando classes Vamos criar uma classe chamada Aluno, colocar alguns atributos e fazer o mapeamento Ob jeto/Relacional com anotações. Primeiro crie um pacote chamado “teste” ou com o nome que você quiser . Dentro do pacote crie a classe Aluno com os atributos abaixo , não esquece de criar os métodos “gets” e “sets” para cada atributo:
Vamos anotar a nossa classe “Aluno”. 1 – A primeira anotação que vamos colocar é a anotação “@Entity” do pacote “javax.persistence ” logo acima do nome da classe. Essa anotação diz para o hibernate que nossa classe é uma entidade e pode ser persistida no banco de dados. 2 – O hibernate pode criar a tabela automaticamente para nós, caso não especifiquemos um nome ele criará a tabela com o mesmo nome da classe. Vamos mudar o nome da tabela com a anotação “@Table”. 3 – Precisamos informar qual atributo será a nossa chave primária na tabela, neste caso o no sso atributo “id”, identificamos ele como chave primária colocando a anotação “ @Id” logo acima do atributo. 4 – Precisamos informar também qual é a estratégia de geração da chave primária, neste caso como estamos utilizando o Mysql, vamos usar o autoincremento. Adicionamos logo abaixo da anotação “@Id” a anotação “@GeneratedValue(strategy=GenerationType.IDENTITY) ”. 5 – Caso não especifiquemos os nomes das colunas o hibernate cria as colunas com o nome dos atributos. Vamos alterar o nome da coluna do atributo “dataDeNascimento”, para isto, basta colocar a anotação “ @Column(name="data_nascimento")”. 6 – Vamos colocar uma restrição no atributo matricula, ele deve ter tamanho máximo de 20 caracteres e não pode ser nulo. Utilizamos a mesma anotação do item 5, “@Column(nullable=false, length=20)”.
Como iniciar um projeto com o Hibernate - Página 12 de 17 Sua classe deve estar parecida com esta: package teste;
javax.persistence.Column; javax.persistence.Entity; javax.persistence.GeneratedValue; javax.persistence.GenerationType; javax.persistence.Id; javax.persistence.Table;
import import import import import import
@Entity @Table(name="tb_aluno") public class Aluno { @Id @GeneratedValue(strategy=GenerationType.IDENTITY ) private Long id; private String nome; private String login; @Column(name="data_nascimento") private String dataDeNascimento;
@Column(nullable=false, length=100) private String matricula; public Aluno() {
} public Long getId() { return id;
} public void setId(Long id) { this.id = id;
} public String getNome() { return nome;
} public void setNome(String nome) { this.nome = nome;
} public String getMatricula() { return matricula;
} public void setMatricula(String matricula) { this.matricula = matricula;
} public String getDataDeNascimento() { return dataDeNascimento;
} public void setDataDeNascimento(String dataDeNascimento) { this.dataDeNascimento = dataDeNascimento;
} public String getLogin() { return login;
Como iniciar um projeto com o Hibernate - Página 13 de 17 } public void setLogin(String login) { this.login = login;
} }
4 – Configurando o Hibernate Para que o hibernate funcione adequadamente, precisamos configurá-lo. Dentro do diretório “src” vamos criar uma pasta com o nome “META -INF” desse jeito mesmo, com as letras em maiúsculas. Dentro dessa pasta vamos criar um arquivo XML com o nome “persistence.xml” e com o conteúdo abaixo:
1.
6. 8. org.hibernate.ejb.HibernatePersistence 9. 10. 11. 12. 14. 16. 18. 20. 22. 23.
24. Na linha 6 estamos definindo o nome de nossa unidade de persistência. Na linha 10 estamos dizendo para o Hibernate mostrar os Sqls que ele faz. Na linha 11 estamos definindo o que o Hibernate vai fazer quando iniciar. Podemos definir este campo com os valores: “create” – o Hibernate irá criar as tabelas na inicialização. “update” – o Hibernate irá atualizar o schemma. “validate” – o Hibernate valida o schemma. “create-drop” – o Hibernate cria as tabelas e deleta após a execução.
Como iniciar um projeto com o Hibernate - Página 14 de 17 Na linha 12 estamos definindo a classe do driver de conexão com o banco. Na linha 14 a url do banco com o nome do database que será utilizado. Na linha 16 o nome do usuário para conectar no banco. Na linha 18 a senha do usuário para conectar no banco. E por fim na linha 20 o dialeto que Hibernate irá utilizar para as consultas.
5 – Configurando o Log4j Para configurar o Log4j basta criar um arquivo com o nome “log4j.properties” na pasta “src”, o arquivo deve ter o seguinte conteúdo:
#log4j.rootLogger=ERROR,dest1 log4j.rootLogger=DEBUG,dest1 log4j.appender.dest1=org.apache.log4j.ConsoleAppender log4j.appender.dest1.layout=org.apache.log4j.PatternLayout log4j.appender.dest1.layout.ConversionPattern= %d %-5p %-5c{3} %x -> %m%n #log4j.appender.dest2=org.apache.log4j.RollingFileAppender #log4j.appender.dest2.File=bridge.log #log4j.appender.dest2.MaxFileSize=100KB # Keep one backup file #log4j.appender.dest2.MaxBackupIndex=3 #log4j.appender.dest2.layout=org.apache.log4j.PatternLayout #log4j.appender.dest2.layout.ConversionPattern=%d [%t] %-5p %-5c{3}(%L) %x -> %m%n
Como iniciar um projeto com o Hibernate - Página 15 de 17
6 – Efetuando algumas operações a) Adicionar aluno Vamos começar criando um novo aluno. Crie uma classe chamada “AdicionarAluno” com o seguinte conteúdo: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
package teste; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class AdicionarAluno { public static void main(String[] args) {
EntityManagerFactory emf = Persistence. createEntityManagerFactory ("testePU"); EntityManager em = emf.createEntityManager(); Aluno aluno = new Aluno(); aluno.setNome("Paulo"); aluno.setDataDeNascimento("09/05/1978"); aluno.setMatricula("71623764128"); aluno.setLogin("paulo"); em.getTransaction().begin(); em.persist(aluno); em.getTransaction().commit(); em.close(); emf.close(); } }
Na linha 9 estamos criando um objeto EntityManagerFactory informando o nome de nossa unidade de persistência. O nome da unidade de persistência foi definido no arquivo “persistence.xml”. Na linha 11 estamos criando um objeto EntityManager, é este objeto que irá gerenciar a nossa entidade Aluno. Nas linhas 13 a 17 estamos criando um objeto da classe aluno. Na linha 19 estamos pedindo para o EntityManager criar uma transação. Na linha 20 estamos pedindo para o EntityManager persistir o objeto aluno no banco de dados. Na linha 21 estamos efetuando a transação. Nas 23 e 24, estamos fechando o EntityManager e a conexão com o banco.
Como iniciar um projeto com o Hibernate - Página 16 de 17 b) Atualizar um aluno Crie uma classe chamada “AtualizarAluno” com o seguinte conteúdo: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
package teste; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; public class AtualizarAluno
{ public static void main(String[] args)
{ EntityManagerFactory emf = Persistence. createEntityManagerFactory ("testePU"); EntityManager em = emf.createEntityManager(); Aluno aluno = em.find(Aluno.class, 2L); aluno.setLogin("paulo2"); em.getTransaction().begin(); em.merge(aluno); em.getTransaction().commit(); em.close(); emf.close(); } }
Na linha 15 estamos pedindo para o EntityManager buscar um objeto da classe “Aluno” com o id do tipo long 2. O Hibernate faz a pesquisa e retorna o objeto. Na linha 16 estamos alterando o valor do atributo login. Na linha 18 estamos pedindo para o EntityManager criar uma transação. Na linha 19 estamos pedindo para o EntityManager atualizar o objeto aluno no banco de dados. Na linha 20 estamos efetuando a transação. Nas 22 e 23, estamos fechando o EntityManager e a conexão com o banco.
Como iniciar um projeto com o Hibernate - Página 17 de 17 c) Remover um aluno Crie uma classe chamada “RemoverAluno” com o seguinte conteúdo: 1. package teste; 2. 3. import javax.persistence.EntityManager; 4. import javax.persistence.EntityManagerFactory; 5. import javax.persistence.Persistence; 6. 7. public class RemoverAluno 8. { public static void main(String[] args) 9. 10. { 11. EntityManagerFactory emf = Persistence. 12. createEntityManagerFactory ("testePU"); 13. EntityManager em = emf.createEntityManager(); 14. 15. Aluno aluno = em.find(Aluno.class, 1L); 16. 17. em.getTransaction().begin(); 18. em.remove(aluno); 19. em.getTransaction().commit(); 20. 21. 22. 23.
em.close(); emf.close(); } }
Na linha 15 estamos pedindo para o EntityManager buscar um objeto da classe “Aluno” com o id do tipo long 1. O Hibernate faz a pesquisa e retorna o objeto. Na linha 17 estamos pedindo para o EntityManager criar uma transação. Na linha 18 estamos pedindo para o EntityManager remover o objeto aluno no banco de dados. Na linha 19 estamos efetuando a transação. Nas 20 e 21, estamos fechando o EntityManager e a conexão com o banco.