Hibernate / JPA middle
Что такое Состояния сущности?
Ответ
Transient — new User(), Hibernate не знает. Persistent/Managed — связан с сессией, dirty checking автоматически синхронизирует изменения. Detached — сессия закрыта/detach, изменения сами в БД не уходят, нужен merge(). Removed — помечен на удаление. Всего четыре состояния.
Разбор: Жизненный цикл сущности — Transient, Persistent/Managed, Detached, Removed; dirty checking работает только в состоянии Persistent, пока объект связан с открытым persistence context. Ловушка дистракторов — перепутанные определения (Transient как новый, не сохранённый объект) и ложное утверждение, что Detached-объект всё ещё отслеживается: после закрытия сессии изменения сами в БД не уходят, нужен merge(). Двух состояний недостаточно: модель Hibernate включает именно четыре.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.