PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Hibernate 'Inverse' in Mapping-Datei

Inverse entscheidet nur, welche Entität in einer Beziehung für die Aktualisierung der Datenbank verantwortlich ist, um die Assoziation widerzuspiegeln.

Nehmen Sie eine bidirektionale Eins-zu-Viele-Zuordnung an. Es gibt zwei Klassen im Code A und B, A enthält eine Menge von B, B behält eine Referenz auf A bei. Auf Datenbankebene muss nur ein Fremdschlüssel aktualisiert werden, die Tabelle für B enthält eine Spalte zum Primärschlüssel von A.

Nehmen wir in diesem Fall an, wir setzen das Inverse =true auf die Set-Seite. Dies impliziert, dass das bloße Hinzufügen einer Entität zum Satz die Fremdschlüsselaktualisierung nicht auslöst. Weil die Verantwortung für die Aktualisierung des Fremdschlüssels bei B liegt. Das Hinzufügen eines B-Objekts zu dem Satz, den A verwaltet, reicht also nicht aus, um die Fremdschlüsselspalte zu aktualisieren. objectA.addToSetOfB(objectB) wirkt sich nicht auf den Fremdschlüssel aus.

Nur wenn B einen Verweis auf A erhält, wird der Fremdschlüssel in der Tabelle für B aktualisiert. Also wird objectB.setA(objectA) sicher den Fremdschlüssel aktualisieren und die Beziehung tatsächlich einrichten.

Ich denke, das gleiche Konzept wird sich auch auf die Many-to-Many-Beziehungen übertragen lassen.