Frage

Haben einige ähnliche Fragen gesehen:

Können Sie auch bitte sagen Sie mir die Kontexte, in denen sie verwendet werden? Oder der Zweck von ihnen?

War es hilfreich?

Lösung

Java Beans

Eine JavaBean ist eine Klasse, die folgt die Java Beans Konventionen wie von Sun definiert Wikipedia hat eine ziemlich gute Zusammenfassung dessen, was Java Beans sind:

  

Java Beans sind wiederverwendbare Software-Komponenten für Java, die visuell in einem Builder-Tool manipuliert werden kann. Praktisch sind sie in der Programmiersprache Java geschrieben Klassen auf eine bestimmte Konvention entsprechen. Sie werden verwendet, um viele Objekte zu einem einzigen Objekt zu kapseln (die Bohne), so dass sie als ein einzelnes Bean-Objekt herumgereicht statt als mehrere einzelne Objekte werden können. Ein Java Bean ist ein Java-Objekt, das serialisiert ist, hat einen nullary Konstruktor, und ermöglicht den Zugriff auf Eigenschaften Getter und Setter-Methoden verwenden.

     

Um als JavaBean Klasse funktioniert, muss eine Objektklasse bestimmte Konventionen über Verfahren Namensgebung, Bau und Verhalten gehorchen. Diese Konventionen ermöglichen es, Werkzeuge zu haben, die verwendet werden können, Wiederverwendung, ersetzen und Java Beans verbinden.

     

Die erforderlichen Konventionen sind:

     
      
  • Die Klasse muss einen öffentlichen Standardkonstruktor haben. Dies ermöglicht eine einfache Instanziierung innerhalb Bearbeitung und Aktivierung Frameworks.
  •   
  • Die Klasseneigenschaften müssen zugänglich sein mit bekommen, Satz und andere Methoden (sog Accessormethoden und Mutatormethoden), nach einem Standardnamenskonvention. Dies ermöglicht eine einfache automatische Inspektion und Aktualisierung von Bean-Status innerhalb Frameworks, von denen vielen benutzerdefinierten Editoren für verschiedene Arten von Eigenschaften umfassen.
  •   
  • sollte die Klasse serialisierbar sein. Dies ermöglicht es, Anwendungen und Frameworks zuverlässig zu speichern, zu speichern und wiederherzustellen die staatliche Bohne in einer Weise, die der VM und plattformunabhängig ist.
  •   
     

Da diese Anforderungen weitgehend als Konventionen ausgedrückt werden, statt durch die Implementierung von Schnittstellen, einige Entwickler sehen Java Beans als Plain Old Java Objects, die bestimmte Namenskonventionen folgen.

POJO

A Plain Old Java Object oder POJO ist ein Begriff, zunächst ein einfaches leichtes Java-Objekt zu benennen, eingeführt, keine javax.ejb Schnittstelle implementiert, im Gegensatz EJB 2.x zum Schwergewicht (vor allem Entity Beans, Stateless Session Beans ist nicht so schlimm IMO ). Heute wird der Begriff für jede einfache Aufgabe ohne Extramaterial verwendet. Auch hier hat Wikipedia einen guten Job POJO zu definieren:

  

POJO ist ein Akronym für Plain Old Java   Objekt. Der Name wird verwendet, zu betonen   dass das betreffende Objekt ein   gewöhnliches Java-Objekt, kein Sonder   Objekt, insbesondere kein   Enterprise JavaBean (vor allem vor   EJB 3). Der Begriff wurde von Martin geprägt   Fowler, Rebecca Parsons und Josh   MacKenzie im September 2000:

     
    

"Wir fragten uns, warum die Menschen gegen die Verwendung von regulären Objekte so waren in ihren     und Systeme festgestellt, dass es     weil einfache Objekte fehlte eine Phantasie     Name. So gaben wir ihnen ein, und es ist     gefangen auf sehr schön. "

  
     

Der Begriff setzt das Muster der   ältere Begriffe für Technologien, die tun   Verwenden Sie keine Lust neue Funktionen, wie zum Beispiel   POTS (Plain Old Telephone Service) in   Telefonie und PODS (Plain Old Daten   Strukturen), die in C ++ definiert sind,   sondern verwenden nur C-Sprache-Funktionen, und   POD (Plain Old Dokumentation) in Perl.

     

Der Begriff hat höchstwahrscheinlich gewonnen   breite Akzeptanz aufgrund der   müssen für eine gemeinsame und leicht   verstanden Begriff, der mit kontrastiert   komplizierter Objektrahmen. EIN   JavaBean ist ein POJO, das ist   serializable, hat eine nicht-Argument   Konstruktor, und ermöglicht den Zugriff auf   Eigenschaften unter Verwendung von Getter und Setter   Methoden. Ein Enterprise Java Bean ist nichteine einzige Klasse, sondern eine ganze Komponente   Modell (auch hier EJB 3 reduziert die   Komplexität von Enterprise Javabeans).

     

Wie Designs mit POJOs worden   Weitere häufig verwendete, Systeme   entstanden, die POJOs einige der geben   Funktionalität in den Rahmen eingesetzt und   mehr Auswahl über welche Bereiche   Funktionalität tatsächlich benötigt wird.   Hibernate und Spring sind Beispiele.

Value Object

Ein Wert Objekt oder VO ist ein Objekt wie java.lang.Integer die Werte (also Wert-Objekte) zu halten. Für eine formelle Definition beziehe ich mich oft zu Martin Fowler Beschreibung des Value Object :

  

In Patterns of Enterprise Application Architecture I beschrieben Value Object als ein kleines Objekt wie ein Geld oder Datumsbereich Objekt. Deren wesentliche Eigenschaft ist, dass sie Wert Semantik eher als Referenz Semantik folgen.

     

Sie können sie in der Regel sagen, weil ihr Begriff der Gleichheit nicht auf Identität basiert, statt zwei Wertobjekte sind gleich, wenn alle ihre Felder gleich sind. Obwohl alle Felder gleich sind, brauchen Sie nicht alle Felder zu vergleichen, wenn eine Teilmenge eindeutig ist -. Für Codes Beispiel pro Währung Objekte sind genug Gleichheit zu testen

     

Eine allgemeine Heuristik ist, dass Wertobjekte völlig unveränderlich sein sollten. Wenn Sie einen Wert Objekt ändern mögen, sollten Sie das Objekt durch einen neuen ersetzen und nicht erlaubt werden, die Werte des Wertobjekts zu aktualisieren, selbst. - aktualisierbar Wertobjekte zu Aliasing-Problemen führen

     

Frühe J2EE Literatur den Begriff Wertobjekt einen anderen Begriff zu beschreiben, was ich einen Datenübertragung . Sie haben sich seit ihrer Verwendung geändert und verwenden den Begriff Transfer Object statt.

     

Sie können etwas mehr gutes Material auf Wertobjekte auf der Wiki und von Dirk Riehle .

Data Transfer Object

Data Transfer Object oder DTO ist ein (anti) Muster mit EJB eingeführt. Stattdessen viele Ferngespräche auf EJBs der Durchführung war die Idee, Daten in einem Wertobjekt zu verkapseln, die über das Netzwerk übertragen werden: ein Data Transfer Object. Wikipedia hat eine gute Definition von Data Transfer Object :

  

Datentransferobjekt (DTO), früher als Wertobjekte oder VO bekannt, ist ein Entwurfsmuster zur Übertragung von Daten zwischen Software-Anwendung Subsysteme verwendet. DTOs wird häufig in Verbindung mit Datenzugriffsobjekten verwendet, um Daten aus einer Datenbank abgerufen werden.

     

Der Unterschied zwischen den Datentransferobjekten und Geschäftsobjekten oder Datenzugriff Objekten ist, dass ein DTO kein Verhalten hat, außer für die Speicherung und den Abruf der eigenen Daten (Zugriffs- und Mutatoren).

     

In einer traditionellen EJB-Architektur dienen DTOs zwei Zwecken: Erstens, sie arbeiten, um das Problem, dass Entity Beans nicht serialisierbar sind; Zweitens, sie implizit eine Montagephase definieren, in dem alle Daten, die von der Ansicht verwendet werden soll, abgerufen und in die DTOs vermarshallten bevor die Steuerung an die Präsentationsebene zurückkehrt.


Also, für viele Menschen, DTOs und VOs sind die gleiche Sache (aber Fowler verwendet VOs etwas anderes bedeuten, wie wir gesehen haben). Die meisten der Zeit, folgen sie den Java Beans Konventionen und sind somit auch Java Beans. Und alle sind POJOs.

Andere Tipps

DTO vs VO

DTO - Datentransferobjekte sind nur Datencontainer, die Daten zwischen den Schichten und Ebenen werden verwendet, zu transportieren.

  • Sie enthält hauptsächlich Attribute. Sie können auch öffentliche Attribute ohne Getter und Setter verwenden.
  • Datentransferobjekte enthalten keine Business-Logik.
  

Analogy:
Einfaches Anmeldeformular mit Attributen username,   Passwort und E-Mail-ID.

     
      
  • Wenn diese Form in RegistrationServlet vorgelegt Datei, die Sie alle Attribute aus Sicht Schicht zu Business-Schicht erhalten wird, wo Sie passieren   die Attribute Java Beans und dann an die DAO oder die Persistenz-Schicht.
  •   
  • DTO hilft bei der die Attribute aus Sicht Schicht auf Business-Schicht transportiert und schließlich auf die Persistenz-Schicht.
  •   

DTO wurde hauptsächlich verwendet, um Daten über das Netzwerk effizient transportiert zu bekommen, kann es auf eine andere JVM auch von JVM sein.

DTOs werden oft java.io.Serializable - um Daten über JVM zu übertragen

.

VO - ein Wert Object [1] [2] stellt mir einen festen Satz von Daten und ist vergleichbar mit einer Java-Enumeration. Die Identität eines Value Object beruht auf ihren Zustand und nicht auf ihre Objektidentität und ist unveränderlich. Ein Beispiel aus der Praxis Color.red, Color.BLUE, SEX.FEMALE etc würde.

POJO vs Java Beans

[1] Die Java-Beanness eines POJO ist, dass seine privaten Attribute sind alle mit dem öffentlichen Getter und Setter zugegriffen, die die Java Beans Konventionen entsprechen. z.

    private String foo;
    public String getFoo(){...}
    public void setFoo(String foo){...}; 

[2] Java Beans muss Serializable implementieren und haben einen Konstruktor ohne Argumente, während in POJO nicht über diese Einschränkungen.

Grundsätzlich

DTO:. "Datentransferobjekte" zwischen verschiedenen Ebenen in der Software-Architektur reisen

VO:. "Wertobjekte" halten ein Objekt wie Integer, Geld usw.

POJO. Plain Old Java Object, das kein spezielles Objekt ist

Java Beans: erfordert eine Java Class serializable zu sein, einen no-arg Konstruktor und einen Getter und Setter für jedes Feld

Java Beans sind nicht das Gleiche wie EJBs.

Die Java Beans-Spezifikation in Java 1.0 wurde von Sun versuchen Sie erlauben Java in einer IDE zu manipuliere Objekte, die wie VB aussah. Es gab Regeln für Objekte festgelegt, die als „Java Beans“ qualifiziert:

  1. Standardkonstruktors
  2. Getter und Setter für private Datenelemente, die die richtige Namenskonvention
  3. gefolgt
  4. Serializable
  5. Vielleicht andere, die ich vergessen.

EJBs kam später. Sie verbinden Komponenten und ein Transaktionsmodell verteilt, in einem Container ausgeführt wird, der Threads verwaltet, Pooling, Lebenszyklus und bietet Dienstleistungen. Sie sind weit entfernt von Java Beans.

DTOs kam im Zusammenhang mit Java zu, weil den Menschen herausgefunden, dass die EJB 1.0-Spezifikation war zu „gesprächig“ mit der Datenbank. Anstatt eine Fülle an Annehmlichkeiten für jedes Datenelement zu machen, die Menschen sie in Java Beans in Massenpaket würden und versenden sie herum.

POJOs waren eine Reaktion auf EJBs.

POJO : Es ist eine Java-Datei (Klasse), die nicht verlängern oder andere Java-Datei (Klasse) implementieren.

Bean : Es ist eine Java-Datei (Klasse), in dem alle Variablen sind privat, Methoden sind öffentlich und geeignete Getter und Setter für den Zugriff auf Variablen verwendet werden.

Normalklasse : Es ist eine Java-Datei (Klasse), die von öffentlichen / privaten / default / geschützte Variablen bestehen können und die möglicherweise nicht verlängern oder eine andere Java-Datei (Klasse) implementieren.

Erste Diskussion über

Normale Klasse -. , das ist mein jede Klasse definieren, das ist ein normalerweise in Java bedeutet, dass es Ihnen verschiedene Arten von Verfahren Eigenschaften etc erstellen
Bean -.. Bean ist nichts, es ist nur ein Objekt dieser bestimmten Klasse mit dieser Bohne Sie Ihre Java-Klasse gleiche wie Objekt zugreifen kann

und nach dem Gespräch über letzte POJO

POJO - POJO ist die Klasse, die nur einen Standardkonstruktor und Privateigentum und jene Eigenschaft zum Einstellen eines entsprechenden Wert Setter und Getter-Methoden haben keine alle Dienste, es haben. Es ist Kurzform von Plain Java Object.

  • Value Object . Verwenden Sie bei Bedarf Wert der Objekte auf die Objekte Gleichheit zu messen
  • Data Transfer Object :. Geben von Daten mit mehreren Attributen in einem Schuss vom Client zum Server über die Schicht, mehrere Anrufe auf Remote-Server zu vermeiden
  • Plain Old Java Object : Es ist wie einfache Klasse, die Eigenschaften, die öffentliche nicht-arg-Konstruktor. Wie erklären wir für JPA-Entität.

Differenz-zwischen-Wert-Objekt-Muster-and-data-transfer-Muster

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