Você está na página 1de 32

JPA

Introduo

JPA Java Persistence API


JPA Mapeamento Objeto/Relacional (ORM) Query Language (EJBQL)

Novo pado ORM Baseado no Hibernate Agiliza muito o desenvolvimento

JPA Pacote: javax.persistence Mapeamento por XML ou Annotation Framework (Hibernate, TopLink, OpenJPA) Pode ser utilizado fora de container EJBs Uso de injeo de dependncia ao invs de lookups JNDI

JPA

JPA Entity: POJOs, suporta herana e polimorfismo EntityManager: responsvel pelas operaes de persistncia de objetos PersistenceContext: rea de memria que mantm os objetos que esto sendo manipulados pelo EntityManager Provedores: especificao para frameworks de persistncia

JPA Entidades
No JPA as entidade so descritas como POJO (Plain Old Java Object), sendo criadas atravs de classes Java Tem uma identidade persistente Podem ter estado persistente e no persistente

JPA

JPA Cada entidade deve possuir um identificador de persistncia -> Chava primria no banco de dados O Identificador pode corresponder a um tipo simples:
@Id : Anota o atributo que ser a chave primria. @GeneratedValue: Gera o valor automaticamente, usando diferentes estratgias.

JPA Anotando Campos


No JPA podemos anotar cada atributo da nossa entidade, de maneira que possamos definir caractersticas especficas para cara um Para isso usamos: @Column

JPA Outras anotaes:


@Temporal - Define que um campo armanezar valor do tipo data @Enumerated - Define que o campo est relacionado a um Enum @Transiente Define que esta propriedade no ser armazenada no banco. @Lob Define que o campo armazenar dados do tipo Long Object Binary

JPA Outras anotaes:


@Entity Entidade a ser persistida @Table Especifica propriedade da tabela @Column Especifica a propriedade da coluna @Id Especifica a chave primria @Named Query Cria consultas estticas @GeneratedValue Gera ids automaticamente

JPA Outras anotaes:


@OneToOne Relacionamento um-para-um @OneToMany Relacionamento um-para-muitos @ManyToOne Relacionamento muitos-para-um @ManyToMany Relacionamento muitos-para-muito

JPA Entity Manager


Similar funcionalidade do Hibernate Session, controla o ciclo de vida das entidades

New()
Cria uma nova entidade

Persist()
Persiste uma entidade

JPA Entity Manager Refresh()


Atualiza o estado da entidade Marca uma entidade para remoo Sincroniza o estado de entidades desacopladas

Remove() Merge()

JPA Operao de Persistncia

JPA Operao de Pesquisa e Remoo

JPA Ciclo de vida

JPA Relacionamentos
Modela a associao entre as entidades Suporta relacionamento unidirecional e bidirecional

Cardinalidades
Um para um (@OneToOne) Um para muitos (@OneToMany) Muitos para um (@ManyToOne) Muitos para muitos (@ManyToMany)

JPA Comportamento em Cascata Usado para propagar o efeito de uma operao entidades associadas

JPA Relacionamento OneToOne A entidade possui uma propriedade composta cujo tipo outra entidade

JPA Relacionamento ManyToOne e OneToMany


A entidade faz parte de uma coleo de entidade de outra entidade

JPA Relacionamento ManyToMany


Duas entidade possuem colees umas das outras, ambas tero propriedades de coleo com a anotao @ManyToMany

JPA Persistence.xml META-INF/persistence.xml

JPA Consultas
NamedQuery / Query (SELECT p FROM Pessoa p LEFT JOIN p.endereco e WHERE e.rua like :rua) pr-compilado

NativeQuery(SELECT p FROM Pessoa p LEFT JOIN Endereco e ON e.codigoPessoa = p.codigo WHERE e.rua like :rua"

JPA Consultas

JPA Exerccios
Criar uma aplicao em Seam para utilzar o JPA

JPA Exerccios
Mapear as seguintes tabelas:
Pessoa (Id, nome, dataNasciomento) Telefone (id, numero, tipoTelefone) TipoTelefone (Enum: Residencial, Celular, Comercial) Endereo (id, rua, bairro, numero) Time (id, nome)

Uma Pessoa tem N Telefones (OneToMany) N Pessoas torcem para N Times (ManyToMany) N Telefones para 1 Pessoa (ManyToOne) Uma pessoa tem 1 Endereo (OneToOne) Um Telefone de um Tipo de Telefone. (Uso de Enum)

JPA Exerccios (OneToOne) Pessoa Endereo


Criar um mtodo para inserir uma pessoa Criar um mtodo para pesquisar essa pessoa Criar um mtodo para alterar essa pessoa Criar um mtodo para inserir uma pessoa com um endereo
Ateno no Cascade.

Criar um mtodo para apagar o endereo de uma pessoa


Ateno na referncia nula

Criar um mtodo para alterar o endereo de uma pessoa.

JPA Exerccios (OneToMany) Pessoa Telefone


Criar um mtodo para inserir uma pessoa com um Telefone Ateno no Cascade. Criar um mtodo para apagar o telefone de uma pessoa Criar um mtodo para alterar o telefone de uma pessoa. Ateno na referncia nula Criar um mtodo para listar todos os telefones de uma pessoa.

JPA Exerccios (ManyToMany) Pessoa Time


Criar um mtodo para inserir uma pessoa e 2 times
Ateno no Cascade.

Criar um mtodo para apagar um time de uma pessoa Criar um mtodo para listar todos os Times de uma pessoa.

JPA Exerccios
Criar uma namedQuery para buscar as pessoas por nome Criar uma namedQuery para buscar as pessoas que moram em uma determinada rua Criar uma namedQuery para buscar as pessoas que torcem para um determinado time Criar uma namedQuery para buscar as pessoas que tem telefone celular

FIM

Você também pode gostar