Из спецификации EJB3.0 :
Использование элемента каскадной аннотации может использоваться для распространения эффекта операции на связанные объекты. Каскадная функциональность чаще всего используется в родительско-дочерних отношениях.
Если X является управляемым объектом, операция удаления приводит к его удалению. Операция удаления каскадно относится к объектам, на которые ссылается X, если отношения между X и этими другими объектами аннотируются значением элемента аннотации cascade = REMOVE или cascade = ALL.
Таким образом, вкратце, отношения сущностей, определенные с помощью CascadeType.All
, гарантируют, что все события постоянства, такие как persist, refresh, merge и remove, которые происходят в родительском объекте, будут переданы дочернему элементу. Определение других CascadeType
параметров предоставляет разработчику более детальный уровень контроля над тем, как ассоциация сущностей обрабатывает постоянство.
Например, если у меня есть объект Book, который содержит список страниц, и я добавляю объект страницы в этот список. Если @OneToMany
аннотация, определяющая связь между Книгой и Страницей, помечена как CascadeType.All
, сохранение Книги приведет к тому, что Страница также будет сохранена в базе данных.