You are on page 1of 44

JPA Passo a Passo

Henrique Eduardo M. Oliveira henrique@voffice.com.br

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

> JPA 2.0 > Concluses

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

ORM: Mapeamento Objeto-Relacional

ORM Objetos Java


Converso

JDBC
Statements Result Sets

Banco de Dados

> Modelo OO vs Modelo Relacional


> > > > Classe = Tabela Objeto = Linha Atributo = Coluna Associao = Chave Estrangeira

> Mapeamento via XML ou Annotations


5
Globalcode Open4Education

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

Voc pode utilizar seu framework preferido!

Globalcode Open4Education

Passo a passo para utilizao


Download do JPA Provider
Preparar banco de dados e driver JDBC Mapeamento Objeto-Relacional Configurar arquivo persistence.xml Implementar acesso a dados via EntityManager
8
Globalcode Open4Education

Passo a passo para utilizao


Download do JPA Provider
Preparar banco de dados e driver JDBC Mapeamento Objeto-Relacional Configurar arquivo persistence.xml Implementar acesso a dados via EntityManager
9
Globalcode Open4Education

JPA Providers
> Hibernate
> http://jpa.hibernate.org

> Toplink Essentials


> http://oss.oracle.com/toplink-essentials-jpa.html

> Open JPA


> http://openjpa.apache.org

> Netbeans 6.5 j vem com Hibernate, Toplink e EclipseLink!!


10
Globalcode Open4Education

Passo a passo para utilizao


Download do JPA Provider
Preparar banco de dados e driver JDBC Mapeamento Objeto-Relacional Configurar arquivo persistence.xml Implementar acesso a dados via EntityManager
11
Globalcode Open4Education

Banco de Dados e Driver JDBC


> MySQL Community Server
> http://dev.mysql.com/downloads/mysql/5.0.html

> MySQL Connector/J 5.1


> http://dev.mysql.com/downloads/connector/j/5.1.html

> Ou banco de dados de sua preferncia!

12

Globalcode Open4Education

Modelo Relacional

13

Globalcode Open4Education

Passo a passo para utilizao


Download do JPA Provider
Preparar banco de dados e driver JDBC Mapeamento Objeto-Relacional Configurar arquivo persistence.xml Implementar acesso a dados via EntityManager
14
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

Chave Primria Simples


> @Id
> Cada entidade precisa possuir uma chave primria > Mapeia uma chave primria simples > Chave pode ser gerada automaticamente:
> IDENTITY, AUTO, SEQUENCE, TABLE

18

Globalcode Open4Education

Chave Primria Composta


> @Embeddable
> Define que uma classe pode fazer parte de uma entidade

19

Globalcode Open4Education

Chave Primria Composta


> @EmbeddedId
> Define uma propriedade que embeddable como chave primria

20

Globalcode Open4Education

Herana
> Single Table
> Apenas 1 tabela para toda a hierarquia > Modelo de herana padro

> Joined Subclass


> 1 tabela com campos para entidade pai na hierarquia e uma tabela para cada entidade filha contendo somente os campos especficos da subclasse

> Table per Class


> 1 tabela separada com todos os campos para cada uma das entidades filhas > Suporte opcional
21
Globalcode Open4Education

Herana com Single Table

22

Globalcode Open4Education

Herana com Joined Subclass

23

Globalcode Open4Education

Relacionamentos
> @ManyToOne
> Entidade Pedido

> @OneToMany
> Entidade Cliente

> FetchType.EAGER > FetchType.LAZY


24
Globalcode Open4Education

Relacionamentos
> @ManyToMany
> Entidade Produto

> Entidade Fornecedor

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

> Consulta dinmica

31

Globalcode Open4Education

Consultas
> Criao de objetos

32

Globalcode Open4Education

Consultas: e muito mais...


> > > > > > > > > > DISTINCT IN LIKE IS NULL IS EMPTY BETWEEN ORDER BY GROUP BY HAVING ...

33

Globalcode Open4Education

Passo a passo para utilizao


Download do JPA Provider
Preparar banco de dados e driver JDBC Mapeamento Objeto-Relacional Configurar arquivo persistence.xml Implementar acesso a dados via EntityManager
34
Globalcode Open4Education

Configurar Persistence.xml
> Hibernate

35

Globalcode Open4Education

Configurar Persistence.xml
> Toplink

36

Globalcode Open4Education

Passo a passo para utilizao


Download do JPA Provider
Preparar banco de dados e driver JDBC Mapeamento Objeto-Relacional Configurar arquivo persistence.xml Implementar acesso a dados via EntityManager
37
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

Acesso a Dados via JavaSE

40

Globalcode Open4Education

Acesso a Dados via JavaEE


> EntityManager injetado pelo container JEE
> Depois injete o DAO nos seus EJBs de negcio

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

> Produtividade o ponto chave!!


43
Globalcode Open4Education

Dvidas?

> Apresentao e cdigo fonte disponveis em: > http://www.thedevelopersconference.com.br > http://code.google.com/p/vofficejava

> Contato: > henrique@voffice.com.br

44

Globalcode Open4Education

You might also like