Der Fall Mitarbeiter und Schreibtisch ist mMn ein Fall für M:N. Warum? Es könnte sein, dass der Mitarbeiter wirklich mehr als einen Schreibtisch hat, wenn er in mehr als einer Abteilung sitzt und für verschiedene Bereiche zuständig ist (gibts hier bei uns). Außerdem kann ein Schreibtisch mehr als einem Mitarbeiter zugeordnet sein, zum Beispiel zwei Halbtagskräften (auch das gibts hier). Es kann aber auch sein, dass einer gar keinen Schreibtisch hat, weil er lange krank geschrieben ist und der Schreibtisch solange an eine Vertretung vergeben ist.
Du solltest nicht bewusst NULL Werte erzeugen, ebenso wenig solltest du alles mögliche als M:N abbilden. Musst eben wirklich deine Anforderungen prüfen und kritisch hinterfragen, wenn dir einer erzählt, dass ein Schreibtisch zu keiner oder einer Person gehört oder jemand immer einen Schreibtisch hat. Wer ist der "Besitzer" einer Beziehung? Wie sieht die Beziehung wirklich aus? Wie du letztendlich die Beziehung in deinen Klassen wiederfindest, ist eine andere Frage. Du kann eine Beziehung bidirektional machen, musst es aber nicht. Wenn du die Frage "Wem gehört dieser Schreibtisch?" nicht stellen brauchst, müsste die Beziehung nicht bidirektional sein. (Muss sie auch nicht sein, wenn du die Frage stellen müsstest, denn du kannst immernoch mit einer gezielten Abfrage herausfinden, wem der Schreibtisch zugeordnet ist.)
Für eigentlich alle gängigen Mappings gibts in der Hibernate Doku Beispiele. Wenn du an einem tieferen Einstieg interessiert bist, lies dir Java Persistence with Hibernate durch (wie die deutsche Ausgabe ist, kann ich dir leider nicht sagen).
|