При создании двунаправленной связи между двумя классами-сущностями мы должны самостоятельно управлять жизненными циклами объектов каждого класса. Однако, если объекты дочернего класса используются только в полях типа Collection родительского класса, то с помощью настройки orphanRemoval можно указать Hibernate’у удалять из БД строки с данными дочернего класса, при удалении объектов из этой коллекции.
Например, если в классе Person есть поле List и между классами Person и Address установлена двунаправленная связь, то можно настроить автоматическое удаление строк из таблицы Address при удалении соответствующих объектов из List.
Читать далее