Что означает CascadeType.ALL
и когда мне следует использовать?
CascadeType.ALL
- это все операции (PERSIST, MERGE, REMOVE, REFRESH, DETACH)
, которые распространяются на связанный объект на связанные объекты в контексте постоянства..
Таким образом, этот вопрос носит весьма общий характер. Если вы знаете эти определения, вы можете определить, нужно ли или нет CascadeType.ALL
.
ДОКУМЕНТАЦИЯ:
EntityManager
имеет API для сохранения новых сущностей, remove
(удаление) существующих сущностей, refresh
состояние сущности из хранилища данных и merge
состояние отсоединенной сущности обратно в контекст постоянства.
Когда EntityManager
выполняет вышеуказанные операции, вы можете указать ему автоматически каскадировать операцию для сущностей, содержащихся в постоянном поле, с помощью свойства cascade вашей аннотации метаданных.Этот процесс рекурсивный.Свойство cascade принимает массив значений перечисления CascadeType.
CascadeType.PERSIST : при сохранении сущности также сохраняются сущности, содержащиеся в этом поле.Мы предлагаем либеральное применение этого правила каскада, потому что если EntityManager находит поле, которое ссылается на новую сущность во время сброса, и поле не использует CascadeType.PERSIST, это ошибка.
CascadeType.MERGE : при объединении состояния объекта также объединяются объекты, содержащиеся в этом поле.
CascadeType.REMOVE : при удалении объекта также удаляются объекты, содержащиеся в этом поле.
CascadeType.REFRESH : при обновлении сущности также обновляйте сущности, содержащиеся в этом поле.
CascadeType.DETACH : при отсоединении сущности,также отсоедините сущности, хранящиеся в этом поле.
ССЫЛКИ:
EJB3.0 Спецификация - 2.1.7 Связи сущностей
Apache-openjpa документы JPA обзор мета-каскад