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/

Introdução ao JPA com Hibernate

  • 1.
    Introdução ao JPA comHibernate Danilo Braga ICC - Software II
  • 2.
    Objetivos O Conhecer osconceitos 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 dedados 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 OA 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 OTipos 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 OEscrita 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
  • 8.
  • 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 parapadronizar 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 demapeamento 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 obanco 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 OProdutividade 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 OOverheads 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 - Poronde começar O Definir unidade persistência O Mapear (anotar) Classes
  • 17.
    Definir Unidade persistência OUnidade 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,...
  • 18.
  • 19.
    persistence.xml • Hibernate.Dialect • Definirqual 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 • Atualizarautomaticamente 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”)
  • 22.
  • 23.
    Mapear Relacionamentos O Podemser 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
  • 24.
  • 25.
    Mapear Relacionamentos Many toMany Departamento Curso
  • 26.
    O private EntityManagerentityManager = 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 produtivopara 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
  • 28.
  • 29.
    Referências O Apostila K19 Ok19-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/