Suchen und Finden
Service
5 Komponenten, Assoziationen und Vererbung (S. 75-76)
Bis jetzt wurden die Grundfunktionen von Hibernate anhand des Objekts User gezeigt. Das Objekt kann in der Datenbank gesichert, aus der Datenbank geladen und auch wieder gelöscht werden. Des Weiteren haben Sie den Lebenszyklus persistenter Objekte kennen gelernt und haben gesehen, wie einfach persistente Objekte außerhalb einer Session verwendet werden können. In diesem Kapitel erläutern wir, wie Objekte als Komponenten oder als Assoziationen verbunden werden. Außerdem werden die Möglichkeiten gezeigt, wie ein Objektmodell mit Vererbung in der Datenbank gemappt werden kann.
5.1 Komponenten
Komponenten werden bei Hibernate auch als Value-Typen bezeichnet. Hibernate unterscheidet zwischen Entity- und Value-Typen. Entities haben einen Primärschlüssel und einen Lebenszyklus. Value-Typen hingegen haben keine Datenbankidentität, das heißt, sie haben keinen Primärschlüssel. Sie gehören zu einer Entity und ihr Zustand wird innerhalb der Tabelle der dazugehörigen Entity gesichert. Ausnahme sind Collections von Value-Typen, dazu mehr im nächsten Kapitel, welches sich ausschließlich mit Collections befasst. Typische Value-Typen sind einfache Objekte vom Typ String. Die Lebensdauer dieser Objekte ist immer an den Lebenszyklus der entsprechenden Entity gebunden. Es ist ebenso möglich, eigene Klassen als Value-Typen von Hibernate behandeln zu lassen, dazu mehr im nächsten Abschnitt.
Die Klasse User im Beispielprojekt enthält noch keine Informationen über die Anschrift eines Benutzers. Dazu soll es die Klasse Address geben, die als Komponente an den User angebunden werden soll, wie es in Abbildung 5.1 zu sehen ist. Normalerweise wird eine Tabelle auf eine Klasse abgebildet. In der objektorientieren Programmierung ist es jedoch oft wünschenswert, eine Tabelle auf mehrere Klassen abzubilden, um damit ein feingranulares Klassenmodell entwerfen zu können. Komponenten ermöglichen die Abbildung mehrerer Klassen auf eine Tabelle.
Die Abbildung zeigt eine Komposition zwischen den Objekten User und Address. Eine Komposition ist eine strengere Form der Aggregation. Die Lebensdauer eines Objektes Address ist dabei an das Objekt User gebunden, eine Address wird also immer mit oder nach dem User erzeugt und vor oder mit dem User zerstört. Die Komposition wird in der UML1 mit einer gefüllten Raute dargestellt, die Aggregation mit einer leeren Raute. Die Aggregation beschreibt eine schwache Beziehung zwischen Objekten. Das Objekt ist ein Teil eines anderen Objekts, kann aber im Gegensatz zur Komposition auch alleine existieren. In der Implementierung mit Java macht das keinen Unterschied, aber das Objekt Address ist in diesem Fall für Hibernate ein Value-Typ und hat keinen eindeutigen Bezeichner (Primärschlüssel).
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion























