Que fait réellement CascadeType.REFRESH?
Question
Que fait réellement le CascadeType.REFRESH
?
La définition de cela est
Lorsque nous actualisons une entité, toutes les entités contenues dans ce champ sont également actualisées
.
mais qu'est-ce que cela signifie en pratique? Quelqu'un pourrait-il me donner un exemple simple, s'il vous plaît?
La solution
Les descriptions individuelles de CascadeType peuvent être un peu déroutantes, mais il existe un moyen facile de le comprendre à partir du cas général.
Pour toutes les valeurs CascadeType
, cela signifie que si l'opération X
est appelée sur une instance à l'aide de l'interface EntityManager
, et que cette instance référence à d'autres instances d'entité et que l'association CascadeType.X
est définie, l'opération EntityManager
sera également appliquée à cette entité associée.
Donc, EntityManager.refresh ()
est défini comme:
Actualiser l’état de l’instance de la base de données, écrasant les modifications apportées à l'entité, le cas échéant.
Donc, si l'entité A a une référence à l'entité B, et que cette référence est annotée avec @ CascadeType.REFRESH
et que EntityManager.refresh (A)
est appelé, puis EntityManager.refresh (B)
est également appelé implicitement.
Autres conseils
Récupération par rafraîchissement: Les objets gérés peuvent être rechargés à partir de la base de données à l'aide de la méthode d'actualisation:
Le contenu de l'objet géré en mémoire est supprimé (y compris les modifications éventuelles) et remplacé par des données extraites de la base de données. Cela peut être utile pour garantir que l'application gère la version la plus récente d'un objet entité, juste au cas où il aurait été modifié par un autre EntityManager depuis son extraction.
Source: http://www.objectdb.com/java/jpa/persistence/ récupérer