Я использую Hibernate и несколько раз выполнял каскадную операцию DELETE от родительского объекта до его дочерних элементов. Я использовал следующие два варианта.Hibernate cascade vs manual delete
Один из вариантов заключается в том, чтобы вывести getChildren() на родительский объект, добавить дочерний элемент в возвращаемую коллекцию дочерних элементов и позволить Hibernate автоматически каскадировать DELETE. Недостатком этой опции является то, что коллекция getChildren() необходимо открыть, хотя она используется только для поддержки каскадирования Hibernate.
Другим вариантом является поиск и удаление детей вручную в ParentDao.delete (parent). Недостатком этой опции является более настраиваемый код. Однако этот параметр может работать лучше, если он использует операторы пакетного удаления.
Какой подход вы в основном используете? Вы видите другие плюсы и минусы?