Schichtenmodell für die Spring/Vaadin Applikation
Spring macht es einfach, Applikationen systematisch in mehreren Schichten aufzubauen. Die Datenbankschicht wird automatisch durch den JPA Persistence Provider (Hibernate im Beispiel) erzeugt. Die Implementierung aller weiteren Schichten erfolgt sinnvollerweise jeweils in separaten Packages.
GUI-Schicht (Views) Die GUI ist in Java mit dem Vaadin Framework implementiert. Andere Möglichkeiten für Single Page Applikationen sind JavaScript Frameworks wie AngularJS. Der Rest der Applikation wird duch die Wahl des GUI Frameworks nur in geringem Maße beeinflusst. |
|
Data Transfer Objekte (DTO) entkoppeln die GUI vom Applikationskern. Sie transportieren die benötigten Daten zur GUI bzw. Eingaben und Befehle zum Kern.DTOs sind einfache, serialisierbare POJOs, die für JavaScript UIs leicht in JSON oder XML transformiert werden können. |
|
Services stellen die DTOs bereit bzw. nehmen Eingaben entgegen. Bei einer Vaadin GUI werden sie meist (nicht bei Verteilung) direkt aufgerufen, bei einer JavaScript UI über ein Spring Servlet. Für die Funktion der Services ergibt das keine gravierenden Unterschiede. |
|
Domain Klassen implementieren den fachlichen Kern der Applikation. Zunächst betrachten wir den statischen Teil, also die Klassen, die in einer Datenbank abgelegt werden sollen.In der Beispielapplikation werden Domainklassen sowohl in Java als auch in Groovy implementiert. |
![]() |
Datenbankzugriff In Spring erfolgt der Datenbankzugriff über Interfaces, aus denen beim Start der Applikation dynamisch Datenbank-Zugriffsobjekte erzeugt werden. Damit wird das DAO Pattern umgesetzt. |
|
Datenbank speichert die Domainklassen. Das Datenbankschema kann durch JPA Annotationen der Domainklassen erzeugt werden. Alternativ ist auch eine XML Konfiguration möglich. Über XML können auch (zumindest mit Hibernate) vorgegebene Datenbankschemata auf Domainklassen abgebildet werden. Im Tutorial werden nur relationale Datenbanken betrachtet. Spring unterstützt darüber hinaus jedoch auch andere Datenbanktechnologien. |
|
Schichtenmodell aus der Sicht des Daten- und Kontrollflusses: Vom Uyser Interface bis zur Datenbank |
Zusätzliche Klassen
Nicht alle Klassen lassen sich eindeutig dem Schichtenmodell zuordnen.
Konfigurationsklassen
Konfigurationsklassen sind direkt im Basispaket der Applikation abgelegt. Dort werden sie anhand der @Configuration Annotation von Spring Boot automatisch gefunden. Häufig werden die Konfigurationsklassen auch als innere Klassen in der Main-Klasse der Applikation implementiert.
Utility Klassen
Diese sind in den util Paketen abgelegt. Im Beispiel gibt es drei Kategorien von Utilities:
- Die Klassen im Projekt associations in de.geobe.util.association unterstützen eine einfachere Behandlung von Assoziationen zwischen Domain-Klassen.
- Die Klassen im Projekt vaadin-builder in de.geobe.util.vaadin unterstützen die Arbeit mit Vaadin UI Klassen durch einen VaadinBuilder und einen Zustandsautomaten zur Behandlung von Dialogzuständen.
- Im Beispielprojekt scrum in de.fh_zwickau.pti.geobe.util.view sind Hilfsklassen für die Views der scrum Beispielapplikation implementiert.