Hibernate
Как влияет операция persist на Entity-объекты каждого из четырех статусов?
Операция persist влияет на Entity-объекты в каждом из четырех статусов жизненного цикла следующим образом:
1. Если статус Entity new, то он меняется на managed и объект будет сохранен в базу при commit’е транзакции или в результате flush операций.
2. Если статус уже managed, операция игнорируется, однако зависимые Entity могут поменять статус на managed, если у них есть аннотации каскадных изменений.
3. Если статус removed, то он меняется на managed.
4. Если статус detached, будет выкинут exception сразу или на этапе commit’а транзакции(нужен merge или update чтобы повторно присоединить).
Важно отметить, что операция persist не выполняет немедленное сохранение объекта в базе данных. Она только помечает объект для сохранения при следующей операции синхронизации с базой данных, например, при завершении транзакции или явном вызове EntityManager.flush().