Habe einige ähnliche Fragen gesehen:
- Was ist der Unterschied zwischen einer JavaBean und einem POJO?
- Was ist der Unterschied zwischen POJO (Plain Old Java Object) und DTO (Data Transfer Object)?
Können Sie mir bitte auch die Kontexte mitteilen, in denen sie verwendet werden? Oder der Zweck von ihnen?
Antworten:
JavaBeans
Eine JavaBean ist eine Klasse, die den von Sun definierten JavaBeans-Konventionen folgt . Wikipedia hat eine ziemlich gute Zusammenfassung dessen, was JavaBeans sind:
POJO
Ein einfaches altes Java-Objekt oder POJO ist ein Begriff, der ursprünglich eingeführt wurde, um ein einfaches, leichtes Java-Objekt zu bezeichnen, das keine
javax.ejb
Schnittstelle implementiert , im Gegensatz zu schwerem EJB 2.x (insbesondere Entity Beans, Stateless Session Beans sind keine so schlechte IMO). Heutzutage wird der Begriff für jedes einfache Objekt ohne zusätzliches Material verwendet. Auch hier leistet Wikipedia gute Arbeit bei der Definition von POJO :Wertobjekt
Ein Wertobjekt oder VO ist ein Objekt
java.lang.Integer
, das Werte enthält (daher Wertobjekte). Für eine formalere Definition verweise ich oft auf Martin Fowlers Beschreibung des Wertobjekts :Datenübertragungsobjekt
Data Transfer Object oder DTO ist ein (Anti) Muster, das mit EJB eingeführt wurde. Anstatt viele Fernaufrufe an EJBs durchzuführen, bestand die Idee darin, Daten in einem Wertobjekt zu kapseln, das über das Netzwerk übertragen werden kann: einem Datenübertragungsobjekt. Wikipedia hat eine anständige Definition von Datenübertragungsobjekt :
Für viele Menschen sind DTOs und VOs dasselbe (aber Fowler verwendet VOs, um etwas anderes zu bedeuten, wie wir gesehen haben). Meistens folgen sie den JavaBeans-Konventionen und sind daher auch JavaBeans. Und alle sind POJOs.
quelle
class SomeClass { public String foo;public String bar; }
innerhalb einer Klasse mit viel komplizierter Logik erstellt wurde, ist es sicher keine JavaBean, es kann keine VO sein, da es veränderlich ist, könnte es eine sein DTO? Obwohl es nicht für entfernte Aufrufe jeglicher Art vorgesehen ist. Darf es als POJO angesehen werden?DTO gegen VO
DTO - Datenübertragungsobjekte sind nur Datencontainer, mit denen Daten zwischen Ebenen und Ebenen transportiert werden.
DTO wurde hauptsächlich verwendet, um Daten effizient über das Netzwerk zu transportieren, möglicherweise sogar von JVM zu einer anderen JVM.
DTOs sind häufig
java.io.Serializable
- um Daten über JVM zu übertragen.VO - Ein Wertobjekt [1] [2] stellt selbst einen festen Datensatz dar und ähnelt einer Java-Enumeration. Die Identität eines Wertobjekts basiert eher auf seinem Status als auf seiner Objektidentität und ist unveränderlich. Ein Beispiel aus der Praxis wäre Color.RED, Color.BLUE, SEX.FEMALE usw.
POJO gegen JavaBeans
[1] Die Java-Beanness eines POJO besteht darin, dass auf seine privaten Attribute alle über öffentliche Getter und Setter zugegriffen wird, die den JavaBeans-Konventionen entsprechen. z.B
[2] JavaBeans müssen Serializable implementieren und einen Konstruktor ohne Argumente haben, während in POJO diese Einschränkungen nicht gelten.
quelle
Grundsätzlich,
DTO: "Datenübertragungsobjekte" können in der Softwarearchitektur zwischen verschiedenen Ebenen wechseln.
VO: "Wertobjekte" enthalten ein Objekt wie Integer, Money usw.
POJO: Einfaches altes Java-Objekt, das kein spezielles Objekt ist.
Java Beans: Erfordert
Java Class
, dass a serialisierbar ist, einenno-arg
Konstruktor sowie einen Getter und Setter für jedes Feld hatquelle
Java Beans sind nicht dasselbe wie EJBs.
Die JavaBeans-Spezifikation in Java 1.0 war der Versuch von Sun, die Manipulation von Java-Objekten in einer IDE zu ermöglichen, die wie VB aussah. Für Objekte, die als "Java Beans" qualifiziert waren, wurden Regeln festgelegt:
EJBs kamen später. Sie kombinieren verteilte Komponenten und ein Transaktionsmodell, das in einem Container ausgeführt wird, der Threads, Pooling und Lebenszyklus verwaltet und Services bereitstellt. Sie sind weit entfernt von Java Beans.
DTOs entstanden im Java-Kontext, weil die Leute herausfanden, dass die EJB 1.0-Spezifikation mit der Datenbank zu "gesprächig" war. Anstatt für jedes Datenelement eine Rundreise zu machen, packten die Leute sie in großen Mengen in Java Beans und versendeten sie herum.
POJOs waren eine Reaktion gegen EJBs.
quelle
POJO : Es ist eine Java-Datei (Klasse), die keine andere Java-Datei (Klasse) erweitert oder implementiert.
Bean : Es handelt sich um eine Java-Datei (Klasse), in der alle Variablen privat sind, Methoden öffentlich sind und geeignete Getter und Setter für den Zugriff auf Variablen verwendet werden.
Normale Klasse : Dies ist eine Java-Datei (Klasse), die aus öffentlichen / privaten / Standard- / geschützten Variablen bestehen kann und die eine andere Java-Datei (Klasse) erweitern oder implementieren kann oder nicht.
quelle
Erstes Gespräch über
Normale Klasse - das bedeutet, dass jede Klasse definiert, die normalerweise in Java verwendet wird. Dies bedeutet, dass Sie verschiedene Arten von Methodeneigenschaften usw. erstellen .
Bean - Bean ist nichts anderes als ein Objekt dieser bestimmten Klasse. Mit dieser Bean können Sie auf Ihre Java-Klasse genauso zugreifen wie auf ein Objekt. .
und danach über das letzte POJO sprechen
POJO - POJO ist die Klasse, die keine Dienste hat. Sie hat nur einen Standardkonstruktor und eine private Eigenschaft sowie diese Eigenschaft zum Festlegen eines Werts, der den Setter- und Getter-Methoden entspricht. Es ist eine Kurzform von Plain Java Object.
quelle
Differenz-zwischen-Wert-Objekt-Muster-und-Daten-Übertragungsmuster
quelle