Frage

Ist ein Datenübertragungsobjekt mit dem Wertobjekt identisch oder unterscheiden sie sich?Wenn sie unterschiedlich sind, wo sollen wir dann ein DTO verwenden und wo sollen wir ein VO verwenden?

Die Programmiersprache, über die wir sprechen, ist Java und der Kontext ist - es gibt eine Webanwendung, die Daten aus einer Datenbank abruft und sie dann verarbeitet, und schließlich werden die verarbeiteten Informationen im Front-End angezeigt

War es hilfreich?

Lösung

Ein Wertobjekt ist ein einfaches Objekt, dessen Gleichheit nicht auf Identität basiert. Ein Datenübertragungsobjekt ist ein Objekt, das zum Übertragen von Daten zwischen Softwareanwendungssubsystemen verwendet wird, normalerweise zwischen Geschäftsschichten und der Benutzeroberfläche.Es konzentriert sich nur auf einfache Daten, hat also kein Verhalten.

Andere Tipps

Verwenden Sie ein DTO an der Grenze Ihrer Dienste, wenn Sie das eigentliche Domänenobjekt nicht an die Clients des Dienstes senden möchten. Dies trägt dazu bei, die Abhängigkeiten zwischen Client und Dienst zu verringern.

Werteobjekte sind einfach Objekte, deren Gleichheit nicht auf Identität basiert, z.java.lang.Integer

DTOs und Wertobjekte sind keine wirklichen Alternativen zueinander.

Ein Datenübertragungsobjekt ist ein Problem beim Verschieben einer Reihe von Daten von einer Schicht oder Schicht in eine andere. Ziel ist es, die Anzahl der hin- und hergehenden Anrufe zu minimieren, indem eine Reihe von Daten in dieselbe Datenstruktur gepackt und gesendet werden zusammen. Einige Leute verwenden es auch, wie Michael weist in seinem Beitrag hier darauf hin , damit die von einer Ebene verwendeten Klassen nicht verfügbar gemacht werden zu der Schicht, die es nennt. Wenn ich DTO als Kludge bezeichne, bedeutet dies, dass kein genaues abstraktes Konzept implementiert wird. Es ist eine praktische Problemumgehung für die Kommunikation zwischen Anwendungsebenen.

Ein Wertobjekt ist etwas, bei dem wir nur an seinem Wert interessiert sind, z. B. ein Geldbetrag , ein Datumsbereich oder ein Code aus einem Nachschlagetabelle . Es hat keine Identität, was bedeutet, dass Sie nicht besorgt wären, wenn Sie mehrere von ihnen hätten, zu verfolgen, welche welche ist, weil sie keine Dinge an sich sind.

Kontrastwert Objekte zu Dingen, die in Ihrem System eine eindeutige Identität haben und als Entitäten bezeichnet werden. Wenn Sie ein System haben, in dem ein Kunde verfolgt, der eine Zahlung leistet, sind der Kunde und die Zahlung Entitäten, da sie bestimmte Dinge darstellen, der Geldbetrag für die Zahlung jedoch nur ein Wert ist und keine eigene Existenz hat. soweit es Ihr System betrifft. Wie sich etwas auf Ihr System bezieht, bestimmt, ob es sich um ein Wertobjekt oder eine Entität handelt.

Sie sind unterschiedlich, aber ich habe die beiden in der Vergangenheit sogar austauschbar verwendet, was falsch ist.Ich habe gelesen, dass DTO (Data Transfer Object) in der ersten Ausgabe des Core J2EE Patterns-Buches als VO (Value Object) bezeichnet wurde, konnte diese Referenz jedoch nicht finden.

Ein DTO, das ich manchmal als dummes Übertragungsobjekt bezeichnet habe, um mich daran zu erinnern, dass es sich um einen Container handelt und keine Geschäftslogik haben sollte, wird zum Transportieren von Daten zwischen Ebenen und Ebenen verwendet.Es sollte nur ein Objekt mit Attributen sein, das Getter / Setter hat.

Eine VO ähnelt jedoch einer JAVA-Enumeration und repräsentiert einen festen Datensatz.Eine VO hat keine Objektidentität (die Adresse der Objektinstanz im Speicher), sie wird durch ihren Wert identifiziert und ist unveränderlich.

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