SlideShare uma empresa Scribd logo
1 de 29
Introdução ao JPA
com Hibernate
Danilo Braga
ICC - Software II
Objetivos
O Conhecer os conceitos básicos
O JPA
O Hibernate
O Visão geral sobre mapeamento
objeto/relacional
http://www.desenvolvimentopessoal-dp.com/images/objetivos.png
Sumário
O Persistência de dados
O Conceitos básicos e tipos
O Foco na plataforma Java
O Mapeamento Objeto Relacional
O JPA
O Hibernate
O Como se aplica o JPA
O Conceitos principais
http://www.espargirica.com.br/negocio/figuras_negocio/objetivos_indices.jpg
Conceitos básicos de
Persistência
O A maioria das aplicações necessitam que
dados sejam persistidos
O Aplicações
O Busca e
armazenamento;
O Organização ;
O Compartilhamento
dos dados;
O Integridade dos
dados;
O Controle de
concorrência;
O …
Conceitos básicos de
Persistência
O Tipos de persistência
O Arquivos de textos simples(txt, xml, …)
O Banco de dados OO
O Banco de dados relacionais
http://sorisomail.com/img/129885606369.gif
http://www.wp7connect.com/wp-content/uploads/2011/09/file-cabinet.jpg
Conceitos básicos de
Persistência
O Escrita demasiada de código
O Repetitivo e de difícil manutenção
O Produtividade fortemente afetada
O Modelagem dos objetos fica
prejudicada
O Outras camadas ficam acopladas à
Camada de Persistência
Bancos de Dados Relacionais Vs Linguagens OO
ORM
O ORM – Mapeamento Objeto-Relacional
O Permite a construção de sistemas O.O.
utilizando a persistência dos objetos em
BD relacionais.
O Converte objetos em linhas, colunas e
relacionamentos entre tabelas
ORM
Relacional
O.O.
O.O.
Relacional
Java Persistence API (JPA)
O Especificado pelo Java Community Process
O JSR 317 - 2006
O Baseou-se em diversas soluções existentes.
O Frameworks passaram a implementar esta
especificação
O Recursos são um sub-conjunto dos encontrados
nos frameworks que a implementam
Java Persistence API (JPA)
O Configuração através de @Annotations
O É um padrão JavaEE(a partir do Java 5)
O Implementações Disponíveis
O Hibernate - JBoss
O TopLink - Oracle
O OpenJPA - Apache
O EclipseLink - Eclipse
O Entre outros...
O Criado para padronizar as ferramentas de
ORM
O Forma de diminuir a complexidade do
desenvolvimento em alguns casos.
O Gerência de Transações
O Cache
O JPQL – Java Persistence Query Language
Java Persistence API (JPA)
JPA não é Hibernate !!
Especificação vs. Implementação
Hibernate
O Framework de mapeamento Objeto-Relacional
O Cria uma interface entre a base de dados relacional e
a aplicação orientada a objetos
O Framework de persistência Java mais utilizado e
documentado
O Suporta classes desenvolvidas com agregação,
herança, polimorfismo, composição e coleções
Hibernate
O Abstrai o banco de dados utilizado
O suporte para praticamente todos os bancos
de dados comerciais
O Gera código SQL a partir dos
mapeamentos criados
Hibernate - Vantagens
O Produtividade
O Exclui a necessidade de se escrever código
referente a persistência
O Permite criação de DAO genérico
O Possui mecanismos de cache e lazy
O Facilita no controle de transaçõoes
O Manutenbilidade
O Menos linhas de códigos
O Facilita a refatoração
Hibernate - Desvantagens
O Overheads
O Algumas consultas podem ser otimizadas se
escritas em SQL
O Operações que utilizam JDBC puro podem ser
mais rápidas
O Nem todas as operações podem ser realizadas
utilizando Hibernate
O Realizar o mapeamento das classes pode não
ser um tarefa trivial
JPA - Por onde começar
O Definir unidade persistência
O Mapear (anotar) Classes
Definir Unidade persistência
O Unidade de persistência é uma referência
a uma unidade de trabalho com um
banco;
O Ela é definida no arquivo (path default)
src/META-INF/persistence.xml
O Neste arquivo é definido qual
implementação:
O hibernate, toplink, ...
O E qual base de dados:
O MySql, Oracle,...
persistence.xml
persistence.xml
• Hibernate.Dialect
• Definir qual será o dialeto, ou seja, para qual banco será
gerado código
• Hibernate.connection.driver_class
• Definir o driver de conexão
persistence.xml
• Hibernate.hbm2ddl.auto
• Atualizar automaticamente o esquema no banco de
dados.
• Hibernate.show_sql, Hibernate.format_sql,
Hibernate.use_sql_comments
• Formatar no console/log da aplicação
• Hibernate.connection.url, username e password
• Definir a string de conexão com a base de dados
Mapear Classes
O @Entity: define que a entidade será
persistente
(opcional)
@Entity(name=“nomeTabela”)
Mapear Atributos
Mapear Relacionamentos
O Podem ser de diversas multiplicidades
O @OneToOne
O @OneToMany
O @ManyToOne
O @ManyToMany
O one-to-many e many-to-many é
necessário a utilização de coleções
Mapear Relacionamentos
One to One
Mapear Relacionamentos
Many to Many
Departamento
Curso
O private EntityManager entityManager = EMUtil.getEntityManager();
O public void acao(Entidade entidade){
try{
EntityTransaction transaction = entityManager.getTransaction();
transaction.begin();
entityManager.persist (entidade);
entityManager.find (Entidade.class, id)
entityManager.remove (entidade);
…
transaction.commit();
} catch (Exception ex){
transaction.rollback();
log.error(“Ops… Não deu!”);
}
Considerações
O Muito produtivo para operações básicas
de CRUD
O DAO Genérico
O Documentação abrangente
O Padrão amplamente utilizado no mercado
O Dependendo do negócio da aplicação
pode atrapalhar mais do que ajudar
Obrigado!
Dúvidas
http://1.bp.blogspot.com/-ExND_ShM0nw/T-vCZFYpNbI/AAAAAAAAAec/h0g0EcCkz9k/s1600/joinha.jpg
http://eduardocarvalho.net/wp-content/uploads/2012/07/ponto-de-interroga%C3%A7%C3%A3o.jpg
Referências
O Apostila K19
O k19-k21-persistencia-com-jpa2-e-hibernate
O Apostila Caelum
O FJ-25 - Persistência com JPA e Hibernate
O Persistência de dados com Java
Persistence API - Hibernate
O Jefferson S Silva
O www.hibernate.org/

Mais conteúdo relacionado

Mais procurados

Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireportfpsgyn
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéRenzo Petri
 
Apostila hibernate
Apostila hibernateApostila hibernate
Apostila hibernateAgenor Neto
 
Trabalho banco de dados orientado a objetos
Trabalho banco de dados orientado a objetosTrabalho banco de dados orientado a objetos
Trabalho banco de dados orientado a objetoseneck
 
Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Apiguestf54162
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objetoelliando dias
 
Banco de dados Orientado à objetos
Banco de dados Orientado à objetosBanco de dados Orientado à objetos
Banco de dados Orientado à objetosKaio Henrique
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetosDaiana de Ávila
 
BD Orientado a Objetos Versant
BD Orientado a Objetos VersantBD Orientado a Objetos Versant
BD Orientado a Objetos VersantAdail Viana Neto
 
SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016Rodrigo Dornel
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos Raquel Machado
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 

Mais procurados (18)

JPA - Java Persistence API
JPA - Java Persistence APIJPA - Java Persistence API
JPA - Java Persistence API
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
Apresentação Banco de Dados - Caché
Apresentação Banco de Dados - CachéApresentação Banco de Dados - Caché
Apresentação Banco de Dados - Caché
 
Minicurso jpa e hibernate
Minicurso jpa e hibernateMinicurso jpa e hibernate
Minicurso jpa e hibernate
 
Apostila hibernate
Apostila hibernateApostila hibernate
Apostila hibernate
 
Trabalho banco de dados orientado a objetos
Trabalho banco de dados orientado a objetosTrabalho banco de dados orientado a objetos
Trabalho banco de dados orientado a objetos
 
Dao
DaoDao
Dao
 
Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Api
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
 
Banco de dados Orientado à objetos
Banco de dados Orientado à objetosBanco de dados Orientado à objetos
Banco de dados Orientado à objetos
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetos
 
BD Orientado a Objetos Versant
BD Orientado a Objetos VersantBD Orientado a Objetos Versant
BD Orientado a Objetos Versant
 
SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016SQL Saturday 570 - São Paulo - 2016
SQL Saturday 570 - São Paulo - 2016
 
Hibernate - Aula 01
Hibernate - Aula 01Hibernate - Aula 01
Hibernate - Aula 01
 
Banco de dados orientados a objetos
Banco de dados orientados a objetos Banco de dados orientados a objetos
Banco de dados orientados a objetos
 
Workshop questões básicas e avançadas
Workshop questões básicas e avançadasWorkshop questões básicas e avançadas
Workshop questões básicas e avançadas
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Aula 01
Aula 01Aula 01
Aula 01
 

Semelhante a Introdução ao JPA com Hibernate

Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMFábio Rehm
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webRafael Nunes
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Maurício Linhares
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Daniela Macedo
 
Workshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosWorkshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosMarcelo Mrack
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 

Semelhante a Introdução ao JPA com Hibernate (20)

Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Jpa, hibernate and jpql
Jpa, hibernate and jpqlJpa, hibernate and jpql
Jpa, hibernate and jpql
 
JPA INTRODUÇÃO
JPA INTRODUÇÃOJPA INTRODUÇÃO
JPA INTRODUÇÃO
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Palestra
PalestraPalestra
Palestra
 
Hibernate
HibernateHibernate
Hibernate
 
Mapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORMMapeamento Objeto Relacional em PHP com Outlet ORM
Mapeamento Objeto Relacional em PHP com Outlet ORM
 
Banco aula 01
Banco aula 01Banco aula 01
Banco aula 01
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
MongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações webMongoDB - Performance e Escalabilidade para aplicações web
MongoDB - Performance e Escalabilidade para aplicações web
 
Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010Aulas de Java Avançado 1 - Faculdade iDez 2010
Aulas de Java Avançado 1 - Faculdade iDez 2010
 
Hibernate
HibernateHibernate
Hibernate
 
Apache e Java
Apache e JavaApache e Java
Apache e Java
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014Semana acadêmica UFRGS 2014
Semana acadêmica UFRGS 2014
 
Workshop Hibernate Com Comentarios
Workshop Hibernate Com ComentariosWorkshop Hibernate Com Comentarios
Workshop Hibernate Com Comentarios
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 

Introdução ao JPA com Hibernate

  • 1. Introdução ao JPA com Hibernate Danilo Braga ICC - Software II
  • 2. Objetivos O Conhecer os conceitos básicos O JPA O Hibernate O Visão geral sobre mapeamento objeto/relacional http://www.desenvolvimentopessoal-dp.com/images/objetivos.png
  • 3. Sumário O Persistência de dados O Conceitos básicos e tipos O Foco na plataforma Java O Mapeamento Objeto Relacional O JPA O Hibernate O Como se aplica o JPA O Conceitos principais http://www.espargirica.com.br/negocio/figuras_negocio/objetivos_indices.jpg
  • 4. Conceitos básicos de Persistência O A maioria das aplicações necessitam que dados sejam persistidos O Aplicações O Busca e armazenamento; O Organização ; O Compartilhamento dos dados; O Integridade dos dados; O Controle de concorrência; O …
  • 5. Conceitos básicos de Persistência O Tipos de persistência O Arquivos de textos simples(txt, xml, …) O Banco de dados OO O Banco de dados relacionais http://sorisomail.com/img/129885606369.gif http://www.wp7connect.com/wp-content/uploads/2011/09/file-cabinet.jpg
  • 6. Conceitos básicos de Persistência O Escrita demasiada de código O Repetitivo e de difícil manutenção O Produtividade fortemente afetada O Modelagem dos objetos fica prejudicada O Outras camadas ficam acopladas à Camada de Persistência Bancos de Dados Relacionais Vs Linguagens OO
  • 7. ORM O ORM – Mapeamento Objeto-Relacional O Permite a construção de sistemas O.O. utilizando a persistência dos objetos em BD relacionais. O Converte objetos em linhas, colunas e relacionamentos entre tabelas
  • 9. Java Persistence API (JPA) O Especificado pelo Java Community Process O JSR 317 - 2006 O Baseou-se em diversas soluções existentes. O Frameworks passaram a implementar esta especificação O Recursos são um sub-conjunto dos encontrados nos frameworks que a implementam
  • 10. Java Persistence API (JPA) O Configuração através de @Annotations O É um padrão JavaEE(a partir do Java 5) O Implementações Disponíveis O Hibernate - JBoss O TopLink - Oracle O OpenJPA - Apache O EclipseLink - Eclipse O Entre outros...
  • 11. O Criado para padronizar as ferramentas de ORM O Forma de diminuir a complexidade do desenvolvimento em alguns casos. O Gerência de Transações O Cache O JPQL – Java Persistence Query Language Java Persistence API (JPA) JPA não é Hibernate !! Especificação vs. Implementação
  • 12. Hibernate O Framework de mapeamento Objeto-Relacional O Cria uma interface entre a base de dados relacional e a aplicação orientada a objetos O Framework de persistência Java mais utilizado e documentado O Suporta classes desenvolvidas com agregação, herança, polimorfismo, composição e coleções
  • 13. Hibernate O Abstrai o banco de dados utilizado O suporte para praticamente todos os bancos de dados comerciais O Gera código SQL a partir dos mapeamentos criados
  • 14. Hibernate - Vantagens O Produtividade O Exclui a necessidade de se escrever código referente a persistência O Permite criação de DAO genérico O Possui mecanismos de cache e lazy O Facilita no controle de transaçõoes O Manutenbilidade O Menos linhas de códigos O Facilita a refatoração
  • 15. Hibernate - Desvantagens O Overheads O Algumas consultas podem ser otimizadas se escritas em SQL O Operações que utilizam JDBC puro podem ser mais rápidas O Nem todas as operações podem ser realizadas utilizando Hibernate O Realizar o mapeamento das classes pode não ser um tarefa trivial
  • 16. JPA - Por onde começar O Definir unidade persistência O Mapear (anotar) Classes
  • 17. Definir Unidade persistência O Unidade de persistência é uma referência a uma unidade de trabalho com um banco; O Ela é definida no arquivo (path default) src/META-INF/persistence.xml O Neste arquivo é definido qual implementação: O hibernate, toplink, ... O E qual base de dados: O MySql, Oracle,...
  • 19. persistence.xml • Hibernate.Dialect • Definir qual será o dialeto, ou seja, para qual banco será gerado código • Hibernate.connection.driver_class • Definir o driver de conexão
  • 20. persistence.xml • Hibernate.hbm2ddl.auto • Atualizar automaticamente o esquema no banco de dados. • Hibernate.show_sql, Hibernate.format_sql, Hibernate.use_sql_comments • Formatar no console/log da aplicação • Hibernate.connection.url, username e password • Definir a string de conexão com a base de dados
  • 21. Mapear Classes O @Entity: define que a entidade será persistente (opcional) @Entity(name=“nomeTabela”)
  • 23. Mapear Relacionamentos O Podem ser de diversas multiplicidades O @OneToOne O @OneToMany O @ManyToOne O @ManyToMany O one-to-many e many-to-many é necessário a utilização de coleções
  • 25. Mapear Relacionamentos Many to Many Departamento Curso
  • 26. O private EntityManager entityManager = EMUtil.getEntityManager(); O public void acao(Entidade entidade){ try{ EntityTransaction transaction = entityManager.getTransaction(); transaction.begin(); entityManager.persist (entidade); entityManager.find (Entidade.class, id) entityManager.remove (entidade); … transaction.commit(); } catch (Exception ex){ transaction.rollback(); log.error(“Ops… Não deu!”); }
  • 27. Considerações O Muito produtivo para operações básicas de CRUD O DAO Genérico O Documentação abrangente O Padrão amplamente utilizado no mercado O Dependendo do negócio da aplicação pode atrapalhar mais do que ajudar
  • 29. Referências O Apostila K19 O k19-k21-persistencia-com-jpa2-e-hibernate O Apostila Caelum O FJ-25 - Persistência com JPA e Hibernate O Persistência de dados com Java Persistence API - Hibernate O Jefferson S Silva O www.hibernate.org/