Minicurso JPA e Hibernate Frederico Maia Arantes
Minicurso JPA e Hibernate
Frederico Maia Arantes
Quem sou eu?
Frederico Maia Arantes – @fredmaia Programador Java EE – PC Sistemas Instrutor de cursos Java – Supera
Tecnologia Oracle Certified Professional, Java SE 6
Programmer (OCJP) Um dos coordenadores do Gojava Artigo publicado na Easy Java
Magazine http://devsexperts.com
Persistência
O que é persistência?
Persistência
O que é persistência?
Persistência
O que é persistência? Aplicações precisam armazenar seus
dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.
Persistência
O que é persistência? Aplicações precisam armazenar seus
dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.
Na maioria dos casos são utilizados banco de dados relacionais.
Persistência
O que é persistência? Aplicações precisam armazenar seus
dados em algum lugar. Queremos processar dados e podermos acessá-los posteriormente.
Na maioria dos casos são utilizados banco de dados relacionais.
Em contra partida a maioria das aplicações são desenvolvidas no modelo orientado a objetos.
Persistência
Persistência
Relacional x Orientado a Objetos
Dois paradigmas diferentes
Relacional x Orientado a Objetos
Dois paradigmas diferentes
Como resolver as diferenças?
Relacional x Orientado a Objetos
Dois paradigmas diferentes
Como resolver as diferenças?
Como mapear as tabelas do banco de dados para os objetos em Java?
Relacional x Orientado a Objetos
Dois paradigmas diferentes
Como resolver as diferenças?
Como mapear as tabelas do banco de dados para os objetos em Java?
Ou devemos mapear os objetos para tabelas?
Relacional x Orientado a Objetos
JDBC
JDBC (Java Database Connectivity) especificação padrão de persistência
JDBC
JDBC (Java Database Connectivity) especificação padrão de persistência
Que tal juntar os dois mundos?
JDBC
JDBC (Java Database Connectivity) especificação padrão de persistência
Que tal juntar os dois mundos? Misturar o modelo relacional com o
modelo orientado a objetos, misturar o código Java com SQL
JDBC
JDBC (Java Database Connectivity) especificação padrão de persistência
Que tal juntar os dois mundos? Misturar o modelo relacional com o
modelo orientado a objetos, misturar o código Java com SQL
Ok, show me the code!
JDBC – Conectando no BD
JDBC – Inserindo uma Pessoa
JDBC – Buscando uma Pessoa
JDBC ??
JDBC
Mapeamento nada não muito intuitivo
E se eu precisar mudar meu banco de dados?
Tenho que aprender SQL e Java? Para cada banco, o SQL pode variar Tenho que aprender o SQL de cada
banco?
Tenho mesmo que usar JDBC ??
Você precisar ser um herói !!
Tenho mesmo que usar JDBC ??
Você precisar ser um herói !!
Hibernate
O que é hibernate?
Hibernate
Hibernate
É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.
Hibernate
É um estado letárgico pelo qual muitos animais endotérmicos passam durante o inverno, principalmente em regiões temperadas e árticas.
NOT!
Hibernate
Framework para Mapeamento Objeto Relacional (ORM)
Permite que desenvolvamos naturalmente usando o modelo orientados a objetos
Persistência transparente Simplifica o desenvolvimento Independente de banco de dados
Hibernate...
Mantido pela empresa JBoss Não faz parte da especificação
padrão do Java E se a JBoss cancelar o projeto? E se
o Hibernate parar de evoluir? (você tem essa preocupação?)
Se é tão bom, porque não colocá-lo nas tais especificações Java??
JPA (Java Persistence API)
Nova especificação para persistência Já estamos na versão 2.0 da JPA Baseada nos principais frameworks
de mercado É uma especificação portanto
precisa de frameworks que a implementem como Hibernate, EclipseLink e TopLink
Ok, show me the code!
JPA – Arquivo de Configuração
JPA – Conectando no BD
JPA – Inserindo uma Pessoa
JPA – Buscando uma Pessoa
JPA é complicado né?
JPA é complicado né?
Ué, num achei não.
JPA - Mapeamento
Mapear o modelo orientado a objetos e o modelo entidade relacionamento.
JPA - Mapeamento
Mapear o modelo orientado a objetos e o modelo entidade relacionamento.
@Entity: aparece antes do nome das classes que terão objetos persistidos no BD
JPA - Mapeamento
Mapear o modelo orientado a objetos e o modelo entidade relacionamento.
@Entity: aparece antes do nome das classes que terão objetos persistidos no BD
@Id: indica a chave primária
JPA - Mapeamento
Mapear o modelo orientado a objetos e o modelo entidade relacionamento.
@Entity: aparece antes do nome das classes que terão objetos persistidos no BD
@Id: indica a chave primária@GeneratedValue: indica que o
valor da chave primária deve ser gerado pelo BD quando um registro é inserido
Classe Java Comum
Classe Java para JPA
JPA
Que saco esse monte de teoria...
JPA - Codificando
Persistindo (persist)
Buscando (find e getReference)
Removendo (remove)
Atualizando
Listando (query, resultList)
JPA - Codificando
Transações (begin, commit)
Restrições (length, nullable, unique)
Data (@Temporal: Date, Time, Timestamp)
Atributos não persistentes (@Transiente)
JPA - Codificando
EntityManagerFactory é caro
JPAUtil retornando conexões (static)
Criando um DAO Genérico
Perguntas?