Quelle est la différence entre la cascade & inverse en veille prolongée, quels sont-ils utilisés?
Comment utiliser cascade et l'inverse en veille prolongée?
Quelle est la procédure/tag pour les définir?
Sont-ils liés les uns aux autres et comment sont-ils utiles?
- Googler "hibernate cascade inverse" a ceci comme la 3ème résultat.
- hmmm, je n'ai pas remarqué que vous étiez déjà se référant à la même lien.
- Je et @ArunKumar pense que Kaushik Lele réponse doit être marqué comme accepté un.
Vous devez vous connecter pour publier un commentaire.
Dans le cas de plusieurs-à-plusieurs relation par l'intermédiaire de la table; "Cascade", dit qu'un dossier sera créé/mis à jour dans la table enfant. Alors que "l'Inverse", dit qu'un dossier sera créé/mis à jour dans la table intermédiaire
par exemple, Supposons ci-dessous scénario
1 étudiant peut avoir plusieurs téléphones. Donc, Élève de la classe a des biens pour l'Ensemble des téléphones.
Aussi 1 Téléphone peut être détenue par plusieurs élèves. Donc téléphoner à la classe a des biens pour l'Ensemble des Élèves.
Cette cartographie est mentionné dans stud_phone table.
Il y a donc trois tables viz. Étudiant, Téléphone et stud_phone (intermédiaire) de la table.
La cartographie peut ressembler à:
Un nouvel étudiant de l'objet est créé et 2 nouveau téléphone objets sont ajoutés à l'ensemble. Et
session.save(student_obj)
est appelé.En fonction de la "cascade" et "inverse" paramètres de requêtes différentes seront tirées.
Ci-dessous sont différentes combinaisons de cascade et d'inverse et de leur impact.
1) CASCADE EST rien et l'INVERSE est faux
2) CASCADE est rien et l'INVERSE est vrai
3) en CASCADE est enregistrez-mise à jour et l'INVERSE est faux
4) en CASCADE est enregistrez-mise à jour et à l'INVERSE de la vraie
Comme on peut le voir, seulement lors de la CASCADE a été enregistrez-mettre à jour les dossiers ont été créés dans le TÉLÉPHONE de table aussi. Pas autrement.
Lorsque l'INVERSE est faux ( c'est à dire des Étudiants était le propriétaire de la relation ) la table intermédiaire STUD_PHONE a été mis à jour. Lorsque l'inverse est vrai, le Téléphone est propriétaire de la relation, de sorte que même si un nouvel élève a été créée, la table intermédiaire n'a pas été mis à jour.
Ainsi dans le cas de la relation de deux entités, la "cascade" affecte d'une autre entité de la table et "inverse" affecte la table intermédiaire. De sorte que leur effet est indépendant.
Informations référencées à partir de Différents entre la cascade et l'inverse lien:
Également consulter ce sujet sur le forum: https://forum.hibernate.org/viewtopic.php?f=1&t=949041
Ces sont orthogonaux concepts.
Dans les associations, l'une du côté doivent être marquées comme inverse en utilisant
inverse
attribut oumappedBy
attribut (many
côté dansone-to-many
/many-to-one
association et de chaque côté dansmany-to-many
association). Cette information est nécessaire pour Hibernate pour déterminer correctement, comment les classes Java (orientée objet de l'association) sera associé à la tables de base de données(relationnel association).Ce sujet en cascade - vous pouvez spécifier explicitement pour Hibernate pour effectuer des opérations sur les entités associées:
CascadeType.PERSIST
- Lorsque lesave()
oupersist()
méthode est appelée par le propriétaire, toutes les entités associées sont également enregistrées;CascadeType.REMOVE
- Lorsque ledelete()
méthode est appelée par le propriétaire, toutes les entités associées sont également supprimés;CascadeType.MERGE
- Lorsque lemerge()
méthode est appelée par le propriétaire, toutes les entités associées sont également fusionné pour géré/état persistant;CascadeType.REFRESH
- Lorsque lerefresh()
méthode est appelée par le propriétaire, toutes les entités associées sont aussi rafraîchissant de leur base de données de la représentation;CascadeType.DETACH
- Lors de la session à laquelle cette entité a été associé est fermé, toutes les entités de l'état détaché;CascadeType.ALL
- Comprend l'ensemble de la cascade d'opérations;