Можеш ли да изброиш и опишеш възможните състояния на съществата в JPA?
sobes.tech AI
Отговор от AI
В JPA (Java Persistence API) съществуват следните състояния на ентитетите:
-
Transient (Преходен) — обект, създаден в паметта с
new, но не е свързан с контекста на персистентност и не е запазен в базата данни. Промените по този обект не се следят и не се запазват автоматично. -
Managed (Управляван) — обект, свързан с контекста на персистентност (EntityManager). Всички промени по този обект се следят и при извикване на
flush()или потвърждаване на транзакцията, се синхронизират автоматично с базата данни. -
Detached (Отделен) — обект, който е бил управляван преди, но контекстът на персистентност е затворен или обектът е отделен. Промените по този обект не се следят и не се запазват, докато не бъде отново свързан.
-
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();