Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: orphan, removal

Что такое orphan removal?

Вопрос проверяет понимание жизненного цикла дочерних сущностей и управления связями в JPA.

Короткий ответ

orphanRemoval автоматически удаляет дочернюю сущность, если она больше не связана с родительской. Это происходит при удалении объекта из коллекции или обнулении ссылки. Механизм работает только для отношений «родитель–потомок». Он часто используется для строгого управления зависимыми сущностями. По смыслу это не то же самое, что CascadeType.REMOVE.

Длинный ответ

Определение

Orphan removal — это механизм, при котором JPA удаляет сущность, ставшую «сиротой», то есть утратившую связь с родителем.

@OneToMany(orphanRemoval = true)
private List<Item> items;

Когда срабатывает orphan removal

Удаление происходит, если:

  • объект удалён из коллекции

  • ссылка на родителя обнулена

order.getItems().remove(item);

Отличие от каскадного удаления

Важно различать:

  • CascadeType.REMOVE → удаление при удалении родителя

  • orphanRemoval → удаление при разрыве связи

Где применяется

  • строгие агрегаты

  • зависимые сущности

  • модель «владелец — компонент»

Вывод

orphanRemoval — мощный инструмент для управления зависимыми объектами. Он помогает поддерживать целостность данных, но требует аккуратного использования.

Уровень

  • Рейтинг:

    4

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#orphan

#removal

Подпишись на Java Developer в телеграм