Что делает CascadeType.REFRESH
на самом деле?
Определение для него
Когда мы обновляем объект, все объекты, содержащиеся в этом поле, также обновляются
но что это означает на практике? Может кто-нибудь, пожалуйста, дайте мне простой пример?
Что делает CascadeType.REFRESH
на самом деле?
Определение для него
Когда мы обновляем объект, все объекты, содержащиеся в этом поле, также обновляются
но что это означает на практике? Может кто-нибудь, пожалуйста, дайте мне простой пример?
Индивидуальные описания CascadeType могут быть немного запутанными, но есть простой способ понять это из общего случая.
Для любого из значений CascadeType
это означает, что если операция X
вызывается в экземпляре с использованием интерфейса EntityManager
, и этот экземпляр имеет ссылки на другие экземпляры сущности и эта ассоциация имеет CascadeType.X
, то операция EntityManager
также будет применена к этому связанному объекту.
Итак, EntityManager.refresh()
определяется как:
Обновить состояние экземпляра из база данных, внесенные изменения к сущности, если таковая имеется.
Итак, если объект A имеет ссылку на объект B, и эта ссылка аннотируется с помощью @CascadeType.REFRESH
и вызывается EntityManager.refresh(A)
, то также неявно называется EntityManager.refresh(B)
.
Извлечение через Refresh: Управляемые объекты могут быть перезагружены из базы данных с помощью метода обновления:
Содержимое управляемого объекта в памяти отбрасывается (включая изменения, если есть) и заменяется данными, которые извлекаются из базы данных. Это может быть полезно для обеспечения того, что приложение имеет дело с самой последней версией объекта сущности, на случай, если оно могло быть изменено другим EntityManager с момента его получения.
Источник: http://www.objectdb.com/java/jpa/persistence/retrieve