Hibernate / JPA middle
Каскадные операции: что делает CascadeType.ALL?
Ответ
PERSIST + MERGE + REMOVE + REFRESH + DETACH. Опасность: CascadeType.REMOVE при OneToMany — удаление родителя удалит ВСЕХ детей. Если детей 10 000 — 10 000 DELETE запросов.
Разбор: CascadeType.ALL — это сокращение для полного набора: PERSIST, MERGE, REMOVE, REFRESH и DETACH. Главная ловушка — именно REMOVE: удаление родителя при OneToMany каскадно удаляет всех детей, генерируя по DELETE на каждого. orphanRemoval — это отдельный, более узкий механизм (удаление осиротевших элементов коллекции), а не синоним ALL, и каскад не «воскрешает» detached-родителя при сохранении ребёнка.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.