Escolar Documentos
Profissional Documentos
Cultura Documentos
Introduo
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.
New()
Cria uma nova entidade
Persist()
Persiste uma entidade
Remove() Merge()
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 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)
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