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
2
Agenda
JPA EntityManager Definições Contexto Persistência Obtendo um EntityManager Transações API EntityManager
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;
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;
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;
6
Contexto Persistência
Ponte entre entidades na memória e banco de dados; Gerenciada por um Entity Manager;
Entidade BDContexto
Entity Manager
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;
8
Diagrama de Estado Entidade
newnew()
managed removed
detached
persist()
remove()
persist()
•Contexto fechado•Commit•Serialização
merge()
refresh()
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;
}
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);
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);
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);
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”);
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);