14
Componentes Avançados JPA - API Prof. Leandro Rubim [email protected] [email protected]

JPA - API Prof. Leandro Rubim [email protected] leandro.fiap@gmail

  • Upload
    brita

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

JPA - API Prof. Leandro Rubim [email protected] [email protected]. Agenda. JPA EntityManager Definições Contexto Persistência Obtendo um EntityManager Transações API EntityManager. JPA. Conjunto de anotações para mapeamento O/R; API para persistência de entidades; - PowerPoint PPT Presentation

Citation preview

Page 1: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

Componentes Avançados

JPA - API

Prof. Leandro Rubim

[email protected]

[email protected]

Page 2: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

2

Agenda

JPA EntityManager Definições Contexto Persistência Obtendo um EntityManager Transações API EntityManager

Page 3: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

3

JPA

Conjunto de anotações para mapeamento O/R; API para persistência de entidades; Linguagem de consultas EJB-QL; Especificação independente de fabricante; Utilizaremos a implementação Hibernate:

– Hibernate Core;– Hibernate Annotations;– Hibernate Entity Manager;

Page 4: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

4

Entity Manager

Unidade central para gerenciamento de entidades na JPA através de uma API padronizada;

Responsável pela criação, atualização, remoção e consulta às entidades (CRUD);

Controle de transações; Gerenciamento de cache;

Page 5: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

5

Definições

Unidade de Persistência:– conjunto fixo de classes mapeadas para o banco de dados

(persistence.xml); Contexto de Persistência:

– conjunto de instâncias de entidades gerenciadas de um Entity Manager;

Entidades Gerenciadas: – quando entidades estão associadas a um contexto de

persistência;– alterações no estado das entidades são sincronizadas com o

banco de dados;– ao fechar um contexto de persistência, todas suas instâncias

de entidades associadas tornam-se não gerenciadas; Entidades Não Gerenciadas:

– entidades não associadas a um contexto de persistência (por exemplo quando são instanciadas);

– alterações nas entidades não se refletem no banco de dados;

Page 6: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

6

Contexto Persistência

Ponte entre entidades na memória e banco de dados; Gerenciada por um Entity Manager;

Entidade BDContexto

Entity Manager

Page 7: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

7

Estados Entidade

new instância da entidade criada em memória mas não associada a um contexto de persistência e não possui id equivalente no banco de dados;

managed tem um id no banco de dados e está associada a um contexto de persistência;

detached tem um id no bando de dados mas não está associada ao contexto de persistência;

removed instância da entidade associada a um contexto de persistência mas está programada para ser removida do banco de dados;

Page 8: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

8

Diagrama de Estado Entidade

newnew()

managed removed

detached

persist()

remove()

persist()

•Contexto fechado•Commit•Serialização

merge()

refresh()

Page 9: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

9

Obtendo um EntityManager Utilizar a anotação @PersistenceContext para obter, via injeção de

dependência, uma instância que implemente a interface EntityManager;

Exemplo:

public class ClienteBean ... {

@PersistenceContext

EntityManager manager = null;

}

Page 10: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

10

API EntityManager

persist (Object entity):– enfileira entidade para ser inserida uma entidade no banco de dados e

a torna gerenciada;– Exemplo:

VeiculoEntity veiculo = new VeiculoEntity();

veiculo.setPlaca(“DHZ-5678”);

veiculo.setModelo(“Fusca”);

manager.persist(veiculo);

Page 11: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

11

API EntityManager

merge (Object entidade):– atualiza uma entidade não gerenciada no contexto de persistência;– Caso já exista uma entiade gerenciada com o mesmo id realiza uma

operação de UPDATE;– Caso contrário realiza uma operação de INSERT;– A entidade torna-se gerenciada;– Exemplo:

VeiculoEntity veiculo = new VeiculoEntity();

veiculo.setPlaca(“DHZ-5678”);

veiculo.setModelo(“Fusca”);

manager.merge(veiculo);

Page 12: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

12

API EntityManager

refresh (Object entidade):– Atualiza dados da entidade com base no banco de dados;– Valores não persistidos são descartados;– A entidade torna-se gerenciada;– Exemplo:

VeiculoEntity veiculo = new VeiculoEntity();

veiculo = manager.find(VeiculoEntity.class, 1);

veiculo.setPlaca(“DHZ-5678”);

veiculo.setModelo(“Fusca”);

manager.refresh(veiculo);

Page 13: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

13

API EntityManager

find (Class classeEntidade, Object PK):– localiza uma entidade através de sua chave primária (PK);– Retorna null caso a entidade não seja localizada;– Uma entidade localizada torna-se automaticamente gerenciada;– Exemplo:

// Busca veiculo com id igual a 10

VeiculoEntity veiculo = manager.find(VeiculoEntity.class, 10);

veiculo.setPlaca(“HHH-7777”);

Page 14: JPA - API Prof. Leandro Rubim profleandror@fiap.br leandro.fiap@gmail

14

API EntityManager

remove (Object entidade):– Remove uma entidade acoplada;– Para excluir entidades desacopladas primeiro deve-se localizá-la

através do método find ou getReference;– Exemplo:

VeiculoEntity veiculo = manager.find(VeiculoEntity.class, 10);

manager.remove(veiculo);