Hibernate / JPA middle
Разница между save(), persist(), merge(), update()?
Ответ
persist — для новых (JPA стандарт, не возвращает id). save — Hibernate-specific, возвращает id. merge — копирует detached в managed. update — прикрепляет detached.
Разбор: persist (JPA) предназначен для новых сущностей и не возвращает id (void), save (Hibernate) возвращает сгенерированный идентификатор. merge берёт detached-объект и копирует его состояние в управляемую копию (возвращает её), а update просто переводит detached-объект обратно в managed. Главная ловушка — считать persist/save и merge/update полными синонимами: у них разные контракты возврата и разная работа с detached-объектами.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.