Frage

In Domänenschicht oder Datenzugriffsschicht?

War es hilfreich?

Lösung

Die primäre Motivation für DTOs besteht darin, eine Schnittstelle zu präsentieren, die auf eine andere Ebene zugeschnitten ist (normalerweise die Präsentationsschicht). Beispielsweise benötigt ein Dateneingabebildschirm zusätzlich zu einigen Bits aus einer Bestellung einige Datenbits von einem Benutzerobjekt Eine "Service" -Schicht.

Es gibt Bibliotheken wie Dozer Dort draußen, die die Grunzarbeit des Umwandlung zwischen Domänenmodellen und DTOs automatisieren.

Die wichtige Einstellung ist, dass DTOs die Daten (nicht Geschäftslogik) aus reicheren Domänenmodellobjekten abstrahieren. Kann mit reicheren Domain -Objekten (Daten- und Geschäftslogik) funktionieren

Andere Tipps

Ich bin kein großer Fan von DTOs, aber ich sage, ich mache es nicht in der Datenschicht. Die Datenschicht befasst sich mit Modellobjekten und ihrer Persistenz. Warum mit anderen Schichten koppeln, indem Sie DTOs hineinbringen? Ich würde sie woanders, wahrscheinlich zwischen dem Dienst und der UI -Ebenen, zuordnen, genau an dem Punkt, an dem sie die Grenze zwischen dem Ort überschreiten, wo sie erstellt werden und wo sie verwendet werden.

Wenn Sie dies in den MVC -Kontext aufnehmen, sollten Sie sie in den Controller einfügen. Dies würde ein DTO näher an die View -Ebene kommen und die Serviceebene nur mit Domänenobjekten abspielen, wodurch eine mögliche Verwirrung mit anderen Modellen vermieden wird.

Das DTO selbst ist eigentlich das MVC -Modell (hier erklärt: https://stackoverflow.com/a/1058186).

Im Folgenden finden Sie ein empfohlenes Tutorial, in dem die Controller-, Service -Layer- und DTO -Konzepte zusammengedrückt werden (in Java mit Spring Framework, aber das Konzept ist auch für andere Plattformen klar):https://www.baeldung.com/entity-t-and-from-dto-for-java-Spring-anapplication

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top