© Enkel/Shutterstock.com
SQL nutzen, um Datenformate zu entkoppeln

Intelligent mappen


Entwickler lieben es, Dinge zu entkoppeln – aus gutem Grund. Zu eng gekoppelte Datenmodelle anzupassen, kann aufwendig und teuer werden. Man möchte schließlich vermeiden, dass ein neues Feld in der Datenbank zwingend dazu führt, dass Code für das Frontend angepasst werden muss. In diesem Artikel sehen wir uns Lösungen an, um Datenformate zu entkoppeln.

Im Java-Ökosystem haben sich für die Entkopplung von Datenmodellen einige Mappinglösungen etabliert, und zunächst wirkt es naheliegend, Mappings in Java-Code vorzunehmen. Leider konnte ich aber in der Vergangenheit in einigen Projekten beobachten, wie regelrechte „Mappinglayer“ entstanden, die aufwendig getestet und gewartet werden müssen. Dabei ist, zumindest wenn es um den Zugriff auf Daten in einer relationalen Datenbank geht, bereits eine sehr mächtige Abfragesprache in unser aller Werkzeugkoffer, die Daten mappen kann: SQL. In diesem Artikel möchte ich am Beispiel einer HTTP-Schnittstelle, die Datensätze aus einer Datenbank im JSON-Format liefert, aufzeigen, wie das mit weniger Java-Code bei gleicher Entkopplung funktionieren kann.

Entkoppeln, entkoppeln, entkoppeln

Gerade bei der Entwicklung von Enterprise-Applikationen wird mit dem Ziel der Entkopplung oft ein Schichtenmodell propagiert. Diskussionen über das Für und Wider dieser Architektur werden zur Genüge an anderer Stelle geführt – dieser Artikel hat nicht zum Ziel, Projekte, die diesen Entwurf verfolgen, zu diskreditieren, ohne deren Anforderungen und Gegebenheiten zu kennen. Nicht selten findet man in den definierten Schichten eine Datenzugriffsschicht, eine Schicht für die Businesslogik und eine Schicht für die Präsentation, etwa eine HTTP-Schnittstelle mit jeweils eigenen Datenklassen. Bei den Klassen in der Datenzugriffsschicht handelt es sich meist um 1:1-Abbildungen der Datenbanktabellen. Um die Daten zwischen diesen Schichten entkoppeln zu können, werden entweder selbst Mapper geschrieben oder Mapping-Frameworks eingesetzt. Die Mappingregeln müssen hierbei für die einzelnen Felder der Klassen explizit definiert werden. Oft hat dieser Ansatz zur Folge, dass Klassen erstellt werden, deren einziger Zweck es ist, die Daten unbeschadet durch eine Schicht zu transportieren oder Daten für die Serialisierung in ein Textformat, etwa JSON oder XML, zu halten. Fatal kann das werden, wenn unternehmensweit ein strenges Schichtenmodell als Standard für sämtliche Applikationen vorgegeben wird – was in einigen großen Unternehmen leider immer noch der F...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang