PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Hibernate 'Inverse' dans le fichier de mappage

Inverse décide simplement quelle entité dans une relation est responsable de la mise à jour de la base de données pour refléter l'association.

Supposons une association bidirectionnelle un à plusieurs. Il y a deux classes dans le code A et B, A contient un ensemble de B, B maintient une référence à A. Au niveau de la base de données, il n'y a qu'une seule clé étrangère à mettre à jour, la table pour B contient une colonne à clé primaire de A.

Dans ce cas, supposons que nous mettions l'inverse =vrai du côté de l'ensemble. Cela implique que le simple fait d'ajouter une entité à l'ensemble ne déclenchera pas la mise à jour de la clé étrangère. Parce que la responsabilité de mettre à jour la clé étrangère incombe à B. Ainsi, l'ajout d'un objet B à l'ensemble que A maintient n'est pas suffisant pour mettre à jour la colonne de clé étrangère. objectA.addToSetOfB(objectB) n'affectera pas la clé étrangère.

Ce n'est que lorsque B reçoit une référence à A que la clé étrangère de la table pour B est mise à jour. Ainsi, objectB.setA(objectA) mettra sûrement à jour la clé étrangère et configurera réellement la relation.

Je pense que le même concept s'appliquera également aux relations plusieurs à plusieurs.