Mögliche Duplizieren:
Hibernate unidirectional one to many association - why is a join table better?Warum wird empfohlen, eine unidirektionale Eins-zu-viele-Verknüpfung auf einem Fremdschlüssel zu vermeiden?
In der Hibernate-Online-Dokumentation unter Abschnitt 7.2.3 One-to-many, wird es erwähnt, dass:
unidirektionalen ein auf einem Fremdschlüssel ist ein ungewöhnlicher Fall, und wird nicht empfohlen. Sie sollten stattdessen eine Join-Tabelle für diese Art der Zuordnung verwenden.
Ich würde gerne wissen, warum? Das einzige, was mir in den Sinn kommt, ist, dass es beim Löschen von Kaskaden Probleme geben kann. Zum Beispiel bezieht sich Person auf eine Adresse in einer Eins-zu-Viele-Beziehung auf einem Fremdschlüssel, und die Adresse würde es ablehnen, vor der Person gelöscht zu werden.
Kann jemand den rationalen hinter der Empfehlung erklären? Hier
ist der Link zum Referenzdokument Inhalt: 7.2.3. One-to-many
Ich habe Kopie den eigentlichen Inhalt hier eingefügt:
Eine unidirektionale one-to-many-Vereinigung auf einem Fremdschlüssel ist ein ungewöhnlich Fall, und wird nicht empfohlen.
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <set name="addresses"> <key column="personId" not-null="true"/> <one-to-many class="Address"/> </set> </class> <class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> </class>
create table Person (personId bigint not null primary key) create table Address (addressId bigint not null primary key, personId bigint not null)
Sie sollten stattdessen eine Join-Tabelle für diese Art von Vereinigung verwenden.
siehe http://stackoverflow.com/questions/1307203/hibernate-unidirectional-one-to-many-association-why-is-a-join-table-better –