Systemschichten

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.

Vaadin UI Klassen
Vaadin UI Klassen
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.

Data Transfer Objekte
Data Transfer Objekte
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.

Service Klassen
Service Klassen
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.
Java Domain Klassen
Java Domain Klassen

Groovy Domain Klassen
Groovy Domain Klassen
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.

Spring Repositories
Spring Repositories
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.

Datenbanktabellen
Datenbanktabellen
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:

  1. Die Klassen im Projekt associations in de.geobe.util.association unterstützen eine einfachere Behandlung von Assoziationen zwischen Domain-Klassen.
  2. 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.
  3. Im Beispielprojekt scrum in de.fh_zwickau.pti.geobe.util.view sind Hilfsklassen für die Views der scrum Beispielapplikation implementiert.

 

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.