Você está na página 1de 8

Módulo 4: Laboratório de Programação

Aula 19
JPA: Persistência, Transações
API - EntityManager
● É a classe responsável por gerir o ciclo de vida das entidades (Entity).
● Possui as seguintes funcionalidades:
○ Localizar uma entidade
○ Executar JPQL ou SQL nativo
○ Persistir entidades
○ Atualizar entidades na base de dados
○ Atualizar entidades a partir da base de dados
○ Remover entidades da base de dados
API - EntityManager
● O EntityManager mantém as
entidades que ele gerencia no estado
managed.
API - EntityManager
● Estas entidades ficam armazenadas em cache e, lendo duas vezes da base de
dados a mesma entidade, não são criadas duas instâncias.
○ A mesma instância é retornada na segunda leitura.
● Que entidades são managed?
○ São as que ele cria (usando o find()), por meio de JPQL ou que recebe nos
métodos persist() e merge().
● Que entidades não são managed?
○ Aquelas que acabaram de ser criadas e não foram passadas ao EM (estado
new), as que foram excluídas remove() (estado removed), ou as que foram
desvinculadas da EM com o clear() ou detach().
API - EntityManager - Criar
public class Exemplo {

public void metodo(){


// Criar a Fábrica de Entity Manager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Agenda");

// Criar Entity Manager


EntityManager em = emf.createEntityManager();

// Iniciar Trasação
em.getTransaction().begin();

// Criar Tarefa
Task task = new Task("Fazer algo", new Date());

// Guardar a tarefa
em.persist(task);

// Finalizar Transação
em.getTransaction().commit();
}
}
API - EntityManager - Procurar
public void metodo(){
// Criar a Fábrica de Entity Manager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Agenda");

// Criar Entity Manager


EntityManager em = emf.createEntityManager();

// Iniciar Transação
em.getTransaction().begin();

// Procura Tarefa
Task task = em.find(Task.class, 1);

System.out.println(task.getDescription());
}
API - EntityManager - Atualizar
public void metodo(){
// Criar a Fábrica de Entity Manager
EntityManagerFactory emf = Persistence.createEntityManagerFactory("Agenda");

// Criar Entity Manager


EntityManager em = emf.createEntityManager();

// Iniciar Trasação
em.getTransaction().begin();

// Procura Tarefa
Task task = em.find(Task.class, 1);
task.setComplete(true);
em.merge(task);

// Finalizar Transação
em.getTransaction().commit();
}
API - EntityManager - Spring
● Podemos obter uma instância do EntityManager usando a injeção de
dependências:

@PersistenceContext(unit = "Agenda")
EntityManager em;

Você também pode gostar