Sobes.tech
Junior — Middle

Можеш ли да изброиш и опишеш възможните състояния на съществата в JPA?

sobes.tech AI

Отговор от AI

В JPA (Java Persistence API) съществуват следните състояния на ентитетите:

  1. Transient (Преходен) — обект, създаден в паметта с new, но не е свързан с контекста на персистентност и не е запазен в базата данни. Промените по този обект не се следят и не се запазват автоматично.

  2. Managed (Управляван) — обект, свързан с контекста на персистентност (EntityManager). Всички промени по този обект се следят и при извикване на flush() или потвърждаване на транзакцията, се синхронизират автоматично с базата данни.

  3. Detached (Отделен) — обект, който е бил управляван преди, но контекстът на персистентност е затворен или обектът е отделен. Промените по този обект не се следят и не се запазват, докато не бъде отново свързан.

  4. Removed (Изтрит) — обект, маркиран за изтриване от базата данни. При потвърждаване на транзакцията, обектът ще бъде изтрит.

Пример за преходи:

EntityManager em = entityManagerFactory.createEntityManager();

// Transient
MyEntity entity = new MyEntity();

em.getTransaction().begin();

// Managed
em.persist(entity);

// След persist, обектът става управляван

// Removed
em.remove(entity);

em.getTransaction().commit();

// След commit, обектът става отделен
em.close();