Value Object

Intencje

Efektywny transfer zdalnych, drobnoziarnistych danych poprzez przesyłanie zbioru tych danych.

Powody

Czasem encja ma wiele atrybutów, które są używane zawsze razem. Dla przykładu może to być (kraj, miasto, ulica, numer bloku, kod pocztowy, ...). Jeżeli chcemy je wykorzystywać to musimy wywołać naście metod typu getXXX z enterprise beans. Jak łatwo zauważyć to mocno nam obciąża sieć oraz mamy częste odwołania do bazy danych.

Rozwiązaniem jest używanie value object. Polega to na tym, że komponent łączy się z bazą danych tworzy value object, który jest zbiorem atrybutów, serializuje go i przesyła przez sieć do klienta. Klient wyciąga dane wywołując lokalnie metody przesłanego value object.

Sequence Before and After

Struktura

Structure Diagram

Opis

ValueObject

EnterpriseBean

Zalety i wady rozwiązania

Zalety:

Wady:

Implementacja

Value object jest prosta struktura zawierającą prywatne pola i metody do pobierania tych pól. Musi być serializable. Musi implementować interfejs Serializable lub dostarczać metody które konwertują dane na coś będącego Serializable (np. na String). Jest to potrzebne do przesyłania przez sieć.

Powinniśmy unikać przesyłania dużych value objects. Przeznaczeniem value object jest zmniejszenie ruchu w sieci. Duże obiekty są kosztowne w transporcie wiec powinniśmy przesyłać je oddzielnie (nie łączyć w value object)

Jeżeli chcemy zmieniać dane musimy zmienione value object wysłać do kontenera z żądaniem wgrania nowych danych do bazy danych.