O Java Persistence API(JPA) é um framework utilizado para realizar a persistência dos objetos Java, com ele foi possível obter uma padronização na forma de persistir os dados. A implementação mais conhecida atualmente é o Hibernate, onde é possível diminuir a complexidade de uma aplicação Java – baseada no modelo Orientado a Objetos – para banco de dados que utilizam uma abordagem relacional.
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,...
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
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/