Ich habe versucht, einen Ablauf für eine grundlegende gestufte Webanwendung zu finden, und habe widersprüchliche Informationen online gelesen. Ich versuche herauszufinden, ob es von Vorteil ist, weiterhin DTO-Objekte von Ihrem DAO-zu-Service-Layer mithilfe einer Art Mapper zu verwenden.
Der grundlegende Ablauf, den ich vorsehe, ist wie folgt:
- UI-Modell / Formular -> Controller
- Controller konvertiert Modell in Domänenobjekt (Entität)
- Domänenobjekt -> Serviceschicht
- Domänenobjekt -> DAO
- DAO -> Domain Objekt (e)
- Service -> Benutzeroberfläche
- UI konvertiert Domain in UI-Modelle
Wenn DTO befolgt würde, würde DAO ein DTO zurückgeben, nicht die Entität. Nach einigem Lesen scheint es, als sei DTO ein wenig ausgefallen, da (zumindest in Java) Entities mit Anmerkungen versehene POJOs sind, was bedeutet, dass ihr Speicherbedarf sehr klein geworden ist.
Ist dies der Fall, oder sollten DTOs verwendet werden, um die Domänenobjekte innerhalb der DAO-Schicht vollständig zu kapseln, und wenn dies der Fall ist, was würde die Service-Schicht an die DAO weitergeben?
Vielen Dank!
Einer der Gründe, warum ich denke, dass diese Diskussion immer wieder auftaucht, ist, dass es ein ernstes Problem ist, ein Objekt mit allen benötigten Daten in ein Objekt umzuwandeln, das identisch oder nahezu identisch aussieht du gibst ab
Es ist wahr, es ist eine PITA. Es gibt jedoch einige Gründe (außer den oben genannten), dies zu tun.
Sie können es jedoch relativ effektiv verwalten, wenn Sie die Übersetzungslogik in eine Sammlung von Konvertierungsklassen einkapseln
Schauen Sie sich lambdaJ an, wo Sie 'convert (domainObj, toDto)' ausführen können. Dies ist eine Überladung für die Verwendung mit Sammlungen. Hier ist ein Beispiel für eine Controller-Methode, die davon Gebrauch macht. Wie Sie sehen, sieht es nicht so schlimm aus.
quelle