Pouvez-vous énumérer et décrire les états possibles des entités dans JPA ?
sobes.tech IA
Réponse de l'IA
Dans JPA (Java Persistence API), les entités peuvent se trouver dans les états suivants :
-
Transitoire — objet créé en mémoire avec l'instruction
new, mais non associé au contexte de persistance et non sauvegardé dans la base de données. Les modifications de cet objet ne sont pas suivies ni sauvegardées automatiquement. -
Géré — objet associé au contexte de persistance (EntityManager). Toutes les modifications de cet objet sont suivies et, lors de l'appel à
flush()ou à la validation de la transaction, elles sont automatiquement synchronisées avec la base de données. -
Détaché — objet qui était auparavant géré, mais dont le contexte de persistance a été fermé ou qui a été détaché. Les modifications de cet objet ne sont pas suivies ni sauvegardées jusqu'à ce qu'il soit à nouveau attaché.
-
Supprimé — objet marqué pour être supprimé de la base de données. Lors de la validation de la transaction, l'objet sera supprimé de la base.
Exemple de transitions :
EntityManager em = entityManagerFactory.createEntityManager();
// Transitoire
MyEntity entity = new MyEntity();
em.getTransaction().begin();
// Géré
em.persist(entity);
// Après persist, l'objet devient géré
// Supprimé
em.remove(entity);
em.getTransaction().commit();
// Après commit, l'objet devient détaché
em.close();