Каскадные операции: что делает 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.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться