Podes listar e descrever os possíveis estados das entidades no JPA?
sobes.tech IA
Resposta da IA
No JPA (Java Persistence API), as entidades podem estar nos seguintes estados:
-
Transiente — objeto criado na memória com a instrução
new, mas não associado ao contexto de persistência e não guardado na base de dados. As alterações neste objeto não são rastreadas nem guardadas automaticamente. -
Gerido — objeto associado ao contexto de persistência (EntityManager). Todas as alterações neste objeto são rastreadas e, ao chamar
flush()ou fazer commit da transação, são sincronizadas automaticamente com a base de dados. -
Desanexado — objeto que anteriormente era gerido, mas cujo contexto de persistência foi fechado ou o objeto foi desanexado. As alterações neste objeto não são rastreadas nem guardadas até que seja novamente anexado.
-
Removido — objeto marcado para ser removido da base de dados. Ao fazer commit da transação, o objeto será removido da base.
Exemplo de transições:
EntityManager em = entityManagerFactory.createEntityManager();
// Transiente
MyEntity entity = new MyEntity();
em.getTransaction().begin();
// Gerido
em.persist(entity);
// Após persistir, o objeto torna-se gerido
// Removido
em.remove(entity);
em.getTransaction().commit();
// Após commit, o objeto torna-se desanexado
em.close();