Professional Documents
Culture Documents
Globalcode Open4Education
Palestrante
Henrique Eduardo M. Oliveira (henrique@voffice.com.br) > Trabalha: Arquiteto JEE / Instrutor Java > Formao: Cincias da Computao pela UFSC > Experincia: +7 anos com desenvolvimento de sistemas em Java, especialmente para WEB > Certificaes: SCJA, SCJP 5, SCWCD 1.4, SCEA 5 > Hobby: Praia e Cinema
2
Globalcode Open4Education
Agenda
> > > > O que JPA? Mapeamento Objeto-Relacional Principais funcionalidades da JPA Passo a passo para utilizao em projetos
> Mapeamentos de entidades, chaves primrias, colunas, herana, relacionamentos, locking, validao, operaes em cascata, consultas
Globalcode Open4Education
O que JPA?
> Java Persistence API
> Especificao padro para mapeamento objetorelacional e gerenciamento de persistncia da plataforma Java EE 5.0
> Verso 1.0, faz parte da especificao JSR-220 (EJB 3.0)
> Possui amplo suporte pela maioria dos grandes players do mercado: Apache, Oracle, BEA, JBoss
4
Globalcode Open4Education
JDBC
Statements Result Sets
Banco de Dados
Funcionalidades da JPA
Padroniza Mapeamento Objeto-Relacional Utiliza POJOs ao invs de Entity Beans Pode ser usado com Java SE e Java EE Suporta utilizao de diferentes Providers Possui uma linguagem de consulta extendida Suporta herana, polimorfismo
6
Globalcode Open4Education
Globalcode Open4Education
JPA Providers
> Hibernate
> http://jpa.hibernate.org
12
Globalcode Open4Education
Modelo Relacional
13
Globalcode Open4Education
Mapeamento Objeto-Relacional
15
Globalcode Open4Education
Entidades
> @Entity
> Especifica que uma classe uma entidade > Uma entidade um objeto que pode ser persistido > Representa uma tabela no banco de dados relacional
> @Table
> Especifica nome da tabela no banco de dados
16
Globalcode Open4Education
Atributos
> @Column
> Mapeia um atributo ou uma propriedade (getter) a um campo do banco de dados > Possui diversas opes de validao
> Lana javax.persistence.PersistenceException
17
Globalcode Open4Education
18
Globalcode Open4Education
19
Globalcode Open4Education
20
Globalcode Open4Education
Herana
> Single Table
> Apenas 1 tabela para toda a hierarquia > Modelo de herana padro
22
Globalcode Open4Education
23
Globalcode Open4Education
Relacionamentos
> @ManyToOne
> Entidade Pedido
> @OneToMany
> Entidade Cliente
Relacionamentos
> @ManyToMany
> Entidade Produto
25
Globalcode Open4Education
Operaes em cascata
> CascadeType:
> PERSIST: Quando uma nova entidade persistida, todas as entidades na coleo so persistidas > MERGE: Quando uma entidade desconectada atualizada, todas as entidades na coleo so atualizadas > REMOVE: Quando uma entidade existente removida, todas as entidades na coleo so removidas > ALL: Se aplicam todas as regras acima
26
Globalcode Open4Education
Lock Otimista
> @Version
> Define uma coluna para armazenar informao de verso para controle de lock otimista > Lana javax.persistence.OptimisticLockException
27
Globalcode Open4Education
Herana de Mapeamento
> @MappedSuperclass
> Designa uma classe cujos mapementos sero herdados pelas subclasses > A classe anotada no possui tabela no banco de dados
28
Globalcode Open4Education
Mtodos de Callback
> PostLoad, PostPersist, PostRemove, PostUpdate > PrePersist, PreRemove, PreUpdate
> Podem ser utilizados pra adicionar funcionalidades extras: Validao por exemplo
29
Globalcode Open4Education
Consultas
> Java Persistence Query Language (JP-QL)
> Define linguagem para consulta de entidades
> Consultas baseadas nas entidades e suas propriedades, independente da modelagem fsica do banco de dados > Utiliza sintaxe prxima a SQL
> Consultas estticas (named queries) > Consultas dinmicas
30
Globalcode Open4Education
Consultas
> Consulta esttica
> Anotada na classe ou em arquivo XML separado
31
Globalcode Open4Education
Consultas
> Criao de objetos
32
Globalcode Open4Education
33
Globalcode Open4Education
Configurar Persistence.xml
> Hibernate
35
Globalcode Open4Education
Configurar Persistence.xml
> Toplink
36
Globalcode Open4Education
Acesso a Dados
> javax.persistence.EntityManager
> Gerencia o ciclo de vida das entidades
> NEW, MANAGED, DETACHED, REMOVED
> Utilizado para criar e remover entidades, buscar entidades pela chave primria e fazer consultas > O conjunto de entidades que podem ser gerenciados por um EntityManager definido dentro da Persistence Unit
38
Globalcode Open4Education
Acesso a Dados
> javax.persistence.PersistenceContext
> Conjunto de entidades associadas a um EntityManager
39
Globalcode Open4Education
40
Globalcode Open4Education
41
Globalcode Open4Education
JPA 2.0
> Java Persistence API 2.0
> Especificao iniciada em Julho de 2007 > Draft publicado em Junho de 2008
> Objetivos:
> Expandir as opes de mapeamentos e aumentar flexibilidade para modelagem de objetos > Adio de suporte a colees de tipos bsicos > Expanso da JP-QL > Suporte para validao
> Mais informaes: JSR 317 - http://jcp.org/en/jsr/detail?id=317
42
Globalcode Open4Education
Concluses
> JPA prov uma API simples e padronizada de persistncia para Java SE e Java EE > Padronizao torna possvel o uso de JPA provider de sua escolha > Uso de Annotations simplifica a configurao das entidades > JP-QL permite a construo de consultas complexas
Dvidas?
> Apresentao e cdigo fonte disponveis em: > http://www.thedevelopersconference.com.br > http://code.google.com/p/vofficejava
44
Globalcode Open4Education