Je suis curieux et j'ai besoin de trouver cette réponse rapidement. Google n'aidera pas beaucoup.
L'API Java Persistence possède ces propriétés qui indiquent au framework de cascader les opérations sur les entités associées:
CascadeType.PERSIST
CascadeType.DELETE
CascadeType.MERGE
CascadeType.REFRESH
Je sais ce que signifient les deux premiers: quand je persiste un objet A qui a B, persiste B également, et quand je supprime A, supprime également B.
Mais je ne peux pas comprendre ce que les deux autres accomplissent. Aidez-moi?
REFRESH signifie "extraire tous les changements d'état de la base de données dans ma représentation". La mise en cascade est simple; cela signifie que toutes les entités associées sont actualisées.
MERGE signifie quelque chose de complexe qui se rapproche de "enregistrer" mais ressemble plus à "Repousser cette entité détachée dans un état géré et enregistrer ses changements d'état"; la mise en cascade signifie que toutes les entités associées sont repoussées de la même manière, et le descripteur d'entité gérée dont vous revenez de .merge()
a toutes les entités gérées qui lui sont associées.
Signification d'annotation JPA pour les relations plusieurs à plusieurs :
Je les vois moi-même de cette façon (plus lisibles):