web-dev-qa-db-fra.com

Que signifient REFRESH et MERGE en termes de bases de données?

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?

86
André Chalella

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.

Lien vers une instance des documents pertinents

74
chaos

Signification d'annotation JPA pour les relations plusieurs à plusieurs :

  • ALL - toutes les opérations de mise en cascade possibles effectuées sur l'entité source sont mises en cascade vers la cible de l'association.
  • MERGE - si l'entité source est fusionnée, la fusion est mise en cascade vers la cible de l'association.
  • PERSIST - si l'entité source est persistante, la persistance est mise en cascade vers la cible de l'association.
  • REFRESH - si l'entité source est actualisée, l'actualisation est répercutée en cascade sur la cible de l'association.
  • SUPPRIMER - si l'entité source est supprimée, la cible de l'association est également supprimée.

Je les vois moi-même de cette façon (plus lisibles):

  • MERGE - pour les objets existants, pour fusionner les données existantes dans le tableau avec les données de mon objet. (synchronisation avec la base de données)
  • PERSIST - crée de nouveaux enregistrements à partir d'un objet dans la base de données.
  • REFRESH - consiste à actualiser les données de l'objet. Il y a peut-être eu un changement dans la base de données qui doit être synchronisé. (synchronisation à partir de la base de données)
  • SUPPRIMER - est, eh bien, supprimer.
81
cgp