Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Java EE 7: Geschäftsanwendungen

Beziehungen zwischen Entitäten

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Für Java EE gilt dasselbe, wie für Menschen: Beziehungen sind das Salz in der Suppe! Dieses Video setzt sich damit auseinander, wie Beziehungen definiert werden können und welche Arten von Beziehungen es gibt.

Transkript

Für die Java EE gilt dasselbe, wir für das wahre Leben: Beziehungen sind das Salz in der Suppe. Im wahren Leben haben wir Beziehungen zwischen Menschen und in der Java EE haben wir Beziehungen zwischen Entitäten. In dieses Video werden wir uns damit auseinander setzen, welche Arten von Beziehungen es gibt, wie wir diese definieren können und wir werden unsere drei Entitäten: Customer, Address und Communication miteinander in Beziehung setzen. Generell, können wir verschiedene Formen von Beziehungen unterschieden, diese werden ausgedrückt mit Hilfe von Annotationen. Die @One ToOne Annotation erlaubt es uns eine 1:1-Beziehung mit einer anderen Entität auszudrücken. Die @One ToMan Annotation erlaubt es uns eine 1:n-Beziehung mit einer anderen Entität auszudrücken. Das bedeutet, wir verfügen auf Ebene der Klasse, auf der diese @One ToMany Annotation verwendet wird, über eine Liste von anderen Entitäten. Das Gegenstück dazu ist die @Many ToOne Annotation und diese wird, wenn Sie so wollen, auf der anderen Seite der Beziehung definiert, nämlich dort, wo wir eine n:1-Beziehung haben. Hier halten wir eine Instanz der referenzierten Entität vor und das kann von verschiedenen Entitäten aus geschehen, deswegen @Many ToOne. Und zu guter Letzt gibt es noch die @Many ToMany Annotation und mit deren Hilfe können wir eine n:n-Beziehung zwischen Entitäten definieren. Darüber hinaus können wir weitere speziellere Beziehungen abbilden. Zum Beispiel @Embedded und @Embeddable. Bei @Embeddable und @Embedded ist es so, dass die abhängige Komponente nicht alleine lebensfähig ist. Das heißt, sie ist streng genommen gar keine Entität. Sie verfügt nämlich noch nicht einmal über eine eigene Datenbanktabelle, in der sie gespeichert wird. Die Komponente wird in derselben Tabelle gespeichert, wie die besitzende Komponente. Ebenfalls gibt es die sogenannte @ElementCollection. Die @ElementCollection erlaubt es uns eine Liste von abhängigen Elementen abzubilden. Und diese abhängigen Elemente können da bei Beans oder auch primitive Werte, wie beispielsweise Strings oder Zahlen sein. Die abhängigen Elemente können ebenfalls nicht alleine existieren, sind aber im Unterschied zu @Embedded und @Embeddable Elementen in einer eigenen Tabelle abgebildet. Nur haben sie in dieser eigenen Tabelle keinen eigenen Primärschlüssel, sondern es wird der Fremdschlüssel der besitzenden Komponente verwendet. Beziehungen können darüber hinaus zweiseitig sein. Das kann und muss gegebenenfalls auf der anderen Seite der Beziehung notiert werden. Die Beziehung kann man, dann kaskadierend gestalten. Das bedeutet, wenn ich eine Beziehung habe und eine Seite der Beziehung lösche, dann kann automatisch auch die andere Seite der Beziehung gelöscht werden. Dasselbe gilt für Speichern und Updates. Achtung, das sollten Sie besser nur mit Vorsicht einsetzen. Im Folgenden werden wir nun unsere drei Entitäten: Customer, Address und Communication miteinander in Beziehung setzen. Wir befinden uns hier auf Ebene der Customer-Klasse. Diese Customer-Klasse, die ja einen Kunden repräsentiert, soll über zusätzliche Felder verfügen, nämlich über ein Feld mit dem Namen "Addresses", das es uns erlaubt eine Liste von Adressen vorzuhalten und über ein weiteres Feld vom Typ Communication, das es uns erlaubt eine Liste von Kommunikationsmöglichkeiten, die dieser Kunde uns anbietet vorzuhalten. Wir legen also die entsprechenden privaten Member an und nun können wir diese Member, dann ihrerseits mit den entsprechenden Annotationen versehen. Da wir hier eine 1:n-Beziehung haben, zwischen Kunden und Adresse, verwenden wir die @OneToMany Annotation Dasselbe gibt für die Beziehung zur Kommunikationsliste. Wenn eine Änderung an einem untergeordneten Datensatz vorgenommen wird, beziehungsweise eine Änderung an diesen Datensatz vorgenommen wird, in dem zum Beispiel eine Adresse hinzugefügt wird, dann soll dies automatisch dann auch gespeichert werden. Das drücken wir aus über das cascade-Attribut und hier können wir den Wert "CascadeType.ALL" zuweisen. Mit dessen Hilfe wird automatisch die Abhängige Entität gespeichert, wenn sich an der Hauptentität oder an der Liste etwas ändert. Dasselbe machen wir auch für die Kommunikationsmöglichkeiten, auch hier lassen wir alle Änderungen automatisch kaskadieren. Sie können das natürlich auch auf bestimmte Änderungen einschränken. Was wir jetzt noch nicht hätten, wäre eine Lösung für den Fall, dass der Kunde selbst gelöscht wird. In diesem Fall hätten wir sogenannte "Leichen" in der Datenbank, also Zombies, also Datensätze für Adresse und Kommunikation, die gar keinen übergeordneten Datensatz mehr besitzen. Um dies zu erlauben, dass diese Datensätze dann auch automatisch gelöscht werden, verwenden wir das "orphanRemoval" Attribut und das setzen wir auf "true" und drücken damit aus, dass wenn der Hauptdatensatz gelöscht wird, also der Customer automatisch auch alle untergeordneten und anhängigen Datensätze gelöscht werden. Seien Sie aber bitte vorsichtig und machen Sie das nur an den Stellen, an denen Sie wirklich genau wissen was passieren wird. Zuletzt lassen wir für diese beiden Felder noch die entsprechenden Getter und Setter generieren. Sie werden am Fuß der Klasse angefügt und die entsprechenden Getter und Setter erlauben es uns nun auf die entsprechenden Informationen zuzugreifen. In diesem Video haben wir uns damit auseinandergesetzt, welche Arten von Beziehungen Entitäten eingehen können. Wir haben darüber hinaus in unserer Customer Entität eine Beziehung mit Adressen und Kommunikationsmöglichkeiten hergestellt und mit Hilfe der @OneToMany Annotation auch als solches kenntlich gemacht.

Java EE 7: Geschäftsanwendungen

Verfolgen Sie, wie eine komplette Business-Applikation unter dem Einsatz des gesamten Java-Enterprise-Techologiestacks ensteht.

5 Std. 2 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!