Es sollte ein Model geben, dass für die View erstellt wird und von dieser angezeigt wird. Die Berechnung dieses Models übernimmt ein Controller. Es handelt sich um die MVC-Architektur, die schon seit längerem bekannt ist.

Bei vielen Web-Anwendungen ist die View jedoch zu einer eigenständigen Anwendung mutiert und greift selbstständig auf gerade benötigte Daten zu. Daraus haben sich Clientseitige MVC-Architekturen entwickelt. Die benötigten Daten werden durch JSON-Request nachgeladen und von der Clientanwendung dargestellt.

Server MC – Teil

Am Server bleibt nur noch das Model und der Controller über. Die View ist auf der Serverseite sehr nebensächlich geworden. Auch die Berechnungen und wie auf die Daten zugegriffen wird, ist viel gezielter geworden. Leider hat sich die Basis wenig verändert. Im Java-Umfeld wird oft mit JPA auf die Datenbank zugegriffen. In JPA kann auch definiert werden wie die einzelnen Tabellen zusammen hängen und wie die Daten nachgeladen werden.

Hier entsteht oft ein Problem bei der Umwandlung in ein JSON-Objekt, da nicht jede “Java-Objekt zu JSON” Implementierung mit den Tücken einer JPA-Abhängigkeiten klar kommt. Durch eine gegenseitige Referenzierung können leicht Endlosschleifen erstellt werden.

Schlechte Lösung

Als Lösung werden die Models in andere flache Models ohne Referenzen umgewandelt. Wird dieser Ansatz gewählt, kommt es zu Codeverdoppelung mit manuellen Umwandlungen von einem Objekt zum anderen.
Genau so problematisch wird auch das Empfangen von JSON-Daten. Bei der Umwandlung müssen auch die fehlenden Felder, vor der Speicherung, im JPA-Model nachgefüllt werden. Dieser Schritt erfolgt in zwei Teilen, zuerst lesen in der Datenbank und danach Änderung in das JPA-Objekt übernehmen. Oft werden wieder die Felder manuell zugewiesen.

Das böse Erwachen kommt bei der ersten Änderung, bei der all diese Stellen wieder gefunden und geändert werden müssen.

Lösungen

Der erste Schritt sollte es eine JSON-Lib zu finden, die mit den Anforderungen im eigenen Projekt gut klar kommt.

Schwieriger ist es bei den beteiligten Programmierern ein Bewusstsein für diese Problem zu bilden. Oft bildet sich dieses Bewusstsein erst nach einigen Änderungsanfragen und einigen Lehrstunden, in denen verzweifelt nach den richtigen Stellen für die Änderung gesucht wird.

Bildquelle