Felsorolnád és leírnád az entitások lehetséges állapotait a JPA-ban?
sobes.tech MI
Válasz az MI-től
A JPA (Java Persistence API) esetén az entitások a következő állapotokban lehetnek:
-
Átmeneti (Transient) — objektum
new-vel létrehozva a memóriában, de nem kapcsolódik a perzisztencia kontextushoz és nincs mentve az adatbázisba. Az ilyen objektum módosításait nem követik nyomon, és nem mentik automatikusan. -
Kezelet (Managed) — objektum kapcsolódik a perzisztencia kontextushoz (EntityManager). Minden módosítás nyomon követett, és a
flush()vagy tranzakció commitja során automatikusan szinkronizálódik az adatbázissal. -
Leválasztott (Detached) — korábban kezelt objektum, de a perzisztencia kontextus bezárult vagy az objektum leválasztásra került. Módosításait nem követik nyomon, és nem mentik, amíg újra nem kapcsolják.
-
Eltávolított (Removed) — az objektumot törlésre jelölték az adatbázisból. A tranzakció commitja után az objektum törlődik az adatbázisból.
Példa átmenetekre:
EntityManager em = entityManagerFactory.createEntityManager();
// Átmeneti
MyEntity entity = new MyEntity();
em.getTransaction().begin();
// Kezelt
em.persist(entity);
// A persist után az objektum kezelhetővé válik
// Eltávolított
em.remove(entity);
em.getTransaction().commit();
// A commit után az objektum leválasztottá válik
em.close();