Ответ
Каскадирование — это механизм в JPA/Hibernate, который автоматически распространяет операции (persist, merge, remove и др.) с родительской сущности на связанные с ней дочерние сущности. Это позволяет упростить управление жизненным циклом связанных объектов.
Основные типы каскадирования (CascadeType):
PERSIST– сохранение родителя приводит к сохранению дочерних объектов.MERGE– обновление родителя приводит к обновлению дочерних объектов.REMOVE– удаление родителя приводит к удалению дочерних объектов.ALL– все вышеперечисленные операции.REFRESH/DETACH– менее используемые операции обновления состояния и отсоединения.
Почему это важно: Без каскадирования разработчик должен вручную управлять состоянием каждого связанного объекта, что увеличивает объем кода и риск ошибок.
Пример с аннотацией @OneToMany:
@Entity
public class Parent {
@Id
private Long id;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<Child> children = new ArrayList<>();
// ...
}
При вызове entityManager.persist(parent) все объекты в коллекции children также будут сохранены. Параметр orphanRemoval = true обеспечивает автоматическое удаление дочерней сущности из БД при её удалении из коллекции.