$KK(Transfer Object) Das primäre Ziel des Transfer Objects ist es die Netzwerkbelastung zu reduzieren. Statt einzelne Attribute eines Business Objects auszulesen, wird (auch wenn zunächst nur ein einzelnes Attribut gebraucht wird) werden i.a. alle Attribute des Business Objects gelesen. Diese Attribute werden aus dem Business Objekt in ein ValueObject kopiert. Dieses ValueObject wird dann versendet. $B(Bilder,transferObject.gif, Klassen Transfer Object) Verwende Transfer Object falls: * Der Zugriff auf das Enterprise Bean über das Netz erfolgt. Die Zugriffe auf das Bean kann zu Netzwerk Overhead führen. * Die Zahl der lesenden Zugriffe ist deutlich grösser als die schreibenden Zugriffe. * Der Client benötigt meist mehrere Attribute eines Enterbrise Bean. $B(Bilder,transferObjectSequence.gif, SequenzDiagramm Klassen Transfer Object) Das obige Sequenzdiagramm zeigt einen möglichen Ablauf. Der Client holt aus dem BusinnessObject die Attribute, liest diese über ein Value Objekt modifiziert einige und sendet das Value Objekt wieder an den Server, bzw. aktualisiert das Value Objekt. Beachte: * Der Client kommuniziert mit dem BusinessObject mit dem Befehlen getData() zum Auslesen bzw setData() zum Senden der Attribute. * Zum Übertragen der Attribute durch das Netz werden ValueObjekte genommen. Diese ValueObjekte müssen serialisiert werden können. * Die Value Objekte sind sehr klein, sie werden i.a. wie bei ValueObjekten als ReadOnly Objekte realisiert. (im obigen Sequenzdiagramm wird dies mit Schritt 4 verletzt). Vor- und Nachteile: * Vereinfacht die Schnittstellen - Die Schnittstellen von den Clienten zu den Businness Objekten sind identisch (setData bzw getData) * Überträgt mehr Daten in weniger Zugriffen * Reduziert die Netwerkbelastung * Erhöht die Gefahr veraltete Objekte zu haben - Da man seltener auf den Server zugreift, ist die Gefahr dass ein anderer Client die Attribute auf dem Server geändert hat, grösser. * Synchronisation und Versionskontrolle wird schwerer