Java EE 7: Geschäftsanwendungen

Definition von Entitäten

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Entitäten repräsentieren die Daten einer Applikation, die in der Datenbank vorgehalten werden sollen. In diesem Video lernen Sie, wie Entitäten definiert werden und legen drei Entitäten für die Applikation an.

Transkript

Die Geschäftslogikschicht ist, wenn Sie so wollen das Rückgrat einer Java-EE-Applikation, denn hier finden sämtliche Verarbeitungen und sämtliches Vorhalten: Laden, Speichern und Manipulieren von Daten statt. In diesem Video werden wir uns damit auseinandersetzen, wie wir Entitäten, also die zu speichernden Daten eine Applikation definieren können. In der Java EE sind Entitäten glücklicherweise, sehr einfach zu definieren, denn es handelt sich um POJOs "Plain Old Java Objekts", also ganz normale einfache Datenklassen. Die Aufgabe einer Entität besteht darin Daten vorzuhalten. Entitäten können Abhängigkeiten besitzen, also eine Beziehung mit anderen Entitäten, also Datenobjekten eingehen. Um eine Entität also jetzt definieren zu können, verwenden wir die @Entity-Annotation, die auf Ebene der Klasse notiert wird. Diese Annotation ist dafür verantwortlich, dass die Java-EE-Applikation als solches überhaupt erkennt, dass es sich bei dieser Bean, also bei dieser Klasse, um eine Entität handelt. Allerdings ist eine alleinstehende @Entity-Annotation noch nicht zielführend, denn jede Entität, so besagt es die Definition, verfügt über ein Primärschlüssel. Das Primärschlüsselfeld einer Entität wird mit Hilfe der @Id-Annotation versehen und auf die Art unf Weise weißt die Umgebung, dass es sich hierbei um eben dieses Primärschlüsselfeld handelt. So ein Primärschlüssel kann auf verschiedene Arten und Weisen erzeugt werden. Zum einen ist möglich ihn einfach einen Wert zuzuweisen und zum anderen können wir ihn aber auch automatisch generieren lassen. Dass und wie automatisch generiert werden kann, wird festgelegt mit Hilfe der @GeneratedValue-Annotation. Mit deren Hilfe können wir eine von vier möglichen Generierungstrategien angeben. Die Strategien sind AUTO, das ist die beste für die Datenbank geeignete Strategie. IDENTITY, hier verwenden wir Identity- oder Auto-Wert, das heißt, je nach Datenbank anders, um den Primärschlüssel zu generieren. Sowas funktioniert allerdings nur mit Datenbanksystemen, beispielsweise von Microsoft oder der MySQL Datenbank, die wir auch im weiteren Verlauf verwenden werden. SEQUENCE ist eine Strategie, die nur mit Datenbank funktioniert, die Sequenzen kennt. Das sind beispielsweise die Datenbanken von IBM und Oracle. Hier können wir mit Hilfe der zusätzlichen SequenceGenerator Annotation auch angeben, welcher Sequenz Generator verwendet wird und dieser Sequenz Generator kann dann seinerseits auf eine Sequenz wiederum zeigen. Und der letzte Ansatz, den man wirklich nur verwenden sollte, wenn einem gar nichts mehr einfällt, ist der tabellenbasierten Ansatz mit Hilfe der Generierungsstrategie @TABLE. Hier können wir mit Hilfe der zusätzlichen @TabelGenerator-Annotation angeben, welche Generierungstrategie, dann auf Ebene der Tabelle benutzt wird. Wir werden uns nun im weiteren Verlauf mit der Implementierung unser drei Entitäten auseinandersetzen. Bevor wir uns an die Implementierung unser drei Entitäten Customer, Communikation und Address machen, Customer repräsentiert einen Kunden, Communikation repräsentiert einen Kommunikationsweg also E-Mail, Fax, Telefon oder ähnliches und Address repräsentiert eine Adresse. Bevor wir uns also an die Implementierung dieser Entitäten machen, sollten wir zunächst einmal einen Blick auf bereits vordefinierte Enums, also Auflistungen werfen, damit wir uns die Arbeit später sparen können. Wir werden in diesem Projekt unter anderen die Gender Enum benutzen. Dieser Gender Enum repräsentiert das Geschlecht des Kunden, "Male" oder "Female" sind sinnvolle Werte, "Unknown" dient als Platzhalter, falls das Ganze nicht bekannt sein sollte. Die Enum Kind repräsentiert die Art des Kontaktes, beziehungsweise die Art der Adresse, mit der wir es zu tun haben, "Business" oder "Private" sind die möglichen Werte, "Unknown" steht wieder als Platzhalter, falls die Art der Adresse nicht bekannt ist. Die Enum Relationship erlaubt das uns auf Ebene eines Kunden dann später zu definieren, in welcher Beziehung wir zu disem Kunden stehen, "Colleague" steht für einen Kollegen, "Friend" ist ein Freund, "Family" ist die Familie, "Job" ist ein Arbeitskollege. Und CommunicationType als letzte Auflistung wird verwendet, wenn wir die Communication Entität bauen wollen. Da drin können wir nämlich angeben, um welche Art von Kontaktweg es sich handelt: also Telefon, Fax, E-Mail, Web, Mobile sind hier die definierten Werte, "Unknown" steht wiederum als Platzhalter, falls der Wert nicht bekannt sein sollte. Nachdem wir nun einen Blick auf die Auflistungen geworfen haben, können wir nun an die Implementierung der eigentlichen Entitäten gehen. Fangen wir zunächst an mit der Customer Entität. Dieser Customer Entität repräsentiert einen Kunden, sie befindet sich im Package: com.cm.persistence.entities und es handelt sich um eine ganz normale Java Klasse. Damit der Kunde auch als Entität erkennbar ist, annotieren wir die Klasse mit der @EntityAnnotation. Nun benötigen wir zwingend ein Id-Feld. Das kann theoretisch einen beliebigen Namen haben, muss aber in jedem Fall mit der @Id-Annotation versehen werden. Mit Hilfe der @GeneratedValue-Annotation können wir angeben, welche Strategie benutzt wird, um diesen Primärschlüssel zu erzeugen. Wir entscheiden uns hier für die Generierungstrategie AUTO, das bedeutet, es wird der best mögliche Wert genommen. So ein Kunde verfügt über einige Felder, zum Beispiel einen Vornamen einen Nachnamen, ein Geschlecht, wir definieren die Beziehung, die wir mit diesem Kunden haben. Das machen wir mit Hilfe der Relationship-Auflistung und so ein Kunde verfügt ebenfalls über einen Geburtstag, so ein Geburtstag wird ausgedrückt als Java Util Date Instanz. Damit haben wir diese Entität schon fertig definiert und können nun per SourceGenerated Getters and Setters die entsprechenden Getter und Setter definieren lassen. Damit haben wir den Kunden bereits fertig implementiert. Wir werden uns nun im nächsten Schritte der Implementierung der Adresse widmen. Zu diesem Zweck legen wir eine neue Klasse an im selben Package, mit dem Namen "Address". Diese Adresse verfügt ebenfalls über die @Entity-Annotation und weil wir diese Bean jetzt als @Entity kennzeichnen, benötigen wir ebenfalls ein Primärschlüsselfeld, wir drücken dies wieder mit Hilfe der @Id-Annotation aus und mit Hilfe von @GeneratedValue geben wir an, welche Generierungstrategie verwendet werden soll. Wir entscheiden uns wieder für die Generierungstrategie AUTO. So eine Adresse verfügt über einige zusätzliche Informationen, nämlich Straße, Ort, Postleitzahl und Land, ausgedrückt über die Felder: street, city, zip und country. Darüber hinaus geben wir an, ob die Adresse eine private oder eine geschäftliche Adresse ist, wir machen dies mit Hilfe der Kind-Auflistung, die wir vorhin gesehen haben und dem Feld "Kind". So eine Auflistungswert wird, wird normalerweise als nummerischer Wert in der Datenbank gespeichert. Wir wollen dies nicht haben, sondern wir wollen dass das ganze als Zeichenkette gespeichert wird. Aus diesem Grund geben wir mit Hilfe der @Enumrated-Annotation diese Information an die JPA dann weiter. Ganz am Ende werden wir noch die Getter und Setter generieren lassen. Dies machen wir über das Kontextmenü mit der entsprechenden Option. Und schon haben wir für alle unsere Felder die entsprechenden Getter und Setter bereitgestellt und die Adressklasse fertig implementiert. Die letzte Entität, die wir nun noch benötigen, ist die Communikation Entität. Diese Communikation Entität repräsentiert eine mögliche Art der Kommunikation mit einem Kunden. Auch sie ist wieder eine Entität, das bedeutet, sie muss ebenfalls über ein Primärschlüsselfeld verfügen, das drücken wir wieder mit Hilfe der @Id-Annotation aus und auch hier entscheiden wir uns wieder für die Generierungstrategie AUTO, wodurch der Datenbanktreiber, beziehungsweise Dialekt des unten drunterliegenen Persistenz-Framework den besten möglichen Ansatz wählen wird. Die Kommunikation verfügt über zwei Felder. Zum einem ein Feld mit dem Namen "Value" von Typ String, damit wird der eigentliche Kommunikationswert, also beispielsweise die E-Mail Adresse oder eben die Webadresse oder die Telefonnummer angegeben und das Feld mit den Namen "Name" erlaubt es uns dafür einen entsprechenden Namen anzugeben, zum Beispiel "Martin privat" oder "Mamas E-Mail Adresse" oder Ähnliches. Ebenfalls definieren noch zwei weitere Felder, nämlich das Feld CommunikationType, dieses Feld wird Auskunft darüber geben, auf welche Art und Weise die Kommunikation stattfinden wird, auch hier wollen wir wieder, dass das Ganze im klartext also, als Text in der Datenbank gespeichert wird, das drücken wir aus über die @Enumerated-Annotation und auch so ein Kommunikationsweg, wie wir ihn hier definiert haben, kann privat oder geschäftlich sein, dies drücken wir aus über das Feld "kind" von Typ, kind also von EnumarationsTyp "kind", den wir vorhin gesehen und definiert haben. Damit ist die Kommunikationsklasse auch schon fertig implementiert. Es fehlt eigentlich nur noch das Generieren der Getter und Setter Methoden, das machen wir wieder über das Kontextmenü und sobald das erledigt ist, verfügen wir über drei komplette Entitäten, die wir dann im weiteren Verlauf unsere Arbeit an diesem Projekt einsetzen werden. In diesem Video haben wir uns damit auseinandergesetzt, wie wir Entitäten definieren können. Wir haben uns ebenfalls über Generierungstrategien unterhalten und wir haben uns an die Implementierung von drei Entitäten gewagt.

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)
Es fehlt was..
Anonym
Finde die Videos super, jedoch fehlt bei Video "Definition von Entitäten" die Vorgehensweise, wie das Projekt, welches im Video nach den Erklärungen zu den Enums gezeigt wirderstellt wurde.

Ich bin Eclipse-Neuling und bekomme das so nicht hin.

Danke
Schließe mich H. Pascal T. an
Anonym
Im Grunde genommen OK. Und wie Hr. Pascal T. schon anmerkte fehlt auch mir die Beschreibung zum Entitäten Aufbau...

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!