SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
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/

Contenu connexe

Tendances

Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Apiguestf54162
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireportfpsgyn
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objetoelliando dias
 
ODI Series - Treinamento
ODI Series - TreinamentoODI Series - Treinamento
ODI Series - TreinamentoCaio Lima
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento websilvio_sas
 
Odi tutorial glossário e termos técnicos
Odi tutorial   glossário e termos técnicosOdi tutorial   glossário e termos técnicos
Odi tutorial glossário e termos técnicosCaio Lima
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objetoelliando dias
 

Tendances (20)

Jpa – Java Persistence Api
Jpa – Java Persistence ApiJpa – Java Persistence Api
Jpa – Java Persistence Api
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Minicurso jpa e hibernate
Minicurso jpa e hibernateMinicurso jpa e hibernate
Minicurso jpa e hibernate
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Apresentação palestra ireport
Apresentação palestra ireportApresentação palestra ireport
Apresentação palestra ireport
 
Bancos de Dados Orientados a Objeto
Bancos de Dados Orientados a ObjetoBancos de Dados Orientados a Objeto
Bancos de Dados Orientados a Objeto
 
ODI Series - Treinamento
ODI Series - TreinamentoODI Series - Treinamento
ODI Series - Treinamento
 
Hibernate - Aula 01
Hibernate - Aula 01Hibernate - Aula 01
Hibernate - Aula 01
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
Odi tutorial glossário e termos técnicos
Odi tutorial   glossário e termos técnicosOdi tutorial   glossário e termos técnicos
Odi tutorial glossário e termos técnicos
 
JPA INTRODUÇÃO
JPA INTRODUÇÃOJPA INTRODUÇÃO
JPA INTRODUÇÃO
 
Jpa, hibernate and jpql
Jpa, hibernate and jpqlJpa, hibernate and jpql
Jpa, hibernate and jpql
 
Spring Data Jpa
Spring Data JpaSpring Data Jpa
Spring Data Jpa
 
Artigo couchdb
Artigo couchdbArtigo couchdb
Artigo couchdb
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
Banco de Dados Orientado a Objeto
Banco de Dados Orientado a ObjetoBanco de Dados Orientado a Objeto
Banco de Dados Orientado a Objeto
 
Hibernate
HibernateHibernate
Hibernate
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 

En vedette

Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLOtávio Calaça Xavier
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesRosicleia Frasson
 
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...Michel Souza
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simplesLukinha92
 
Conhecendo Spring Framework
Conhecendo Spring FrameworkConhecendo Spring Framework
Conhecendo Spring FrameworkIgo Coelho
 
O framework spring
O framework springO framework spring
O framework springBruno Catão
 
Workshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasWorkshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasKarine Drumond
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
Introdução ao Hibernate
Introdução ao HibernateIntrodução ao Hibernate
Introdução ao Hibernatecelodemelo
 
Apache Cayenne: a Java ORM Alternative
Apache Cayenne: a Java ORM AlternativeApache Cayenne: a Java ORM Alternative
Apache Cayenne: a Java ORM AlternativeAndrus Adamchik
 

En vedette (16)

Web Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQLWeb Semântica e bancos de dados NoSQL
Web Semântica e bancos de dados NoSQL
 
Apostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e PrimefacesApostila Java Web com JSF, JPA e Primefaces
Apostila Java Web com JSF, JPA e Primefaces
 
Hibernate
HibernateHibernate
Hibernate
 
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
INTERFACES para o USUÁRIO - a base de um sistema de gerenciamento para restau...
 
2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples2 1-jpa-mapeamento-simples
2 1-jpa-mapeamento-simples
 
Apresentação mapeamento objeto relacional
Apresentação mapeamento objeto relacionalApresentação mapeamento objeto relacional
Apresentação mapeamento objeto relacional
 
Hibernate
HibernateHibernate
Hibernate
 
Hibernate
HibernateHibernate
Hibernate
 
Conhecendo Spring Framework
Conhecendo Spring FrameworkConhecendo Spring Framework
Conhecendo Spring Framework
 
O framework spring
O framework springO framework spring
O framework spring
 
Workshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéiasWorkshop modelando usuários, tarefas e idéias
Workshop modelando usuários, tarefas e idéias
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Introdução ao Hibernate
Introdução ao HibernateIntrodução ao Hibernate
Introdução ao Hibernate
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Aula JPA
Aula JPAAula JPA
Aula JPA
 
Apache Cayenne: a Java ORM Alternative
Apache Cayenne: a Java ORM AlternativeApache Cayenne: a Java ORM Alternative
Apache Cayenne: a Java ORM Alternative
 

Similaire à Introdução ao JPA com Hibernate em

Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotaçõesdieguinhomcz
 
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
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3Joel Lobo
 

Similaire à Introdução ao JPA com Hibernate em (20)

Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
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)
 
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
 
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
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3
 

Introdução ao JPA com Hibernate em

  • 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/