Sobes.tech
Junior — Middle

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:

  1. Á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.

  2. 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.

  3. 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.

  4. 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();