Widziałem kilka podobnych pytań:
- Jaka jest różnica między JavaBean a POJO?
- Jaka jest różnica między POJO (Plain Old Java Object) a DTO (Data Transfer Object)?
Czy możesz mi również powiedzieć, w jakich kontekstach są używane? A może ich cel?
Widziałem kilka podobnych pytań:
Czy możesz mi również powiedzieć, w jakich kontekstach są używane? A może ich cel?
Odpowiedzi:
JavaBeans
JavaBean to klasa zgodna z konwencjami JavaBeans zdefiniowanymi przez Sun. Wikipedia ma całkiem dobre podsumowanie, czym są JavaBeans :
POJO
Zwykły stary obiekt Java lub POJO to termin początkowo wprowadzony w celu oznaczenia prostego lekkiego obiektu Java, nie implementującego żadnego
javax.ejb
interfejsu, w przeciwieństwie do ciężkiego EJB 2.x (szczególnie Fasola Entity, Stateless Session Beans nie są aż tak złe IMO). Dziś termin ten jest używany dla każdego prostego obiektu bez dodatkowych rzeczy. Ponownie Wikipedia wykonuje dobrą robotę w definiowaniu POJO :Obiekt wartości
Obiekt wartości lub VO to obiekt taki jak te,
java.lang.Integer
które przechowują wartości (stąd obiekty wartości). Aby uzyskać bardziej formalną definicję, często odwołuję się do opisu obiektu wartości : Martin Fowler :Obiekt transferu danych
Obiekt transferu danych lub DTO to (anty) wzór wprowadzony w EJB. Zamiast wykonywać wiele zdalnych wywołań w EJB, pomysł polegał na kapsułkowaniu danych w obiekcie wartości, który można było przesyłać przez sieć: Obiekt przesyłania danych. Wikipedia ma przyzwoitą definicję obiektu do przesyłania danych :
Tak więc dla wielu osób DTO i VO są tym samym (ale Fowler używa VO w znaczeniu czegoś innego, jak widzieliśmy). Przez większość czasu przestrzegają konwencji JavaBeans, a zatem są również JavaBeans. I wszystkie są POJO.
źródło
class SomeClass { public String foo;public String bar; }
wewnątrz klasy z dużą ilością skomplikowanej logiki, na pewno nie jest to JavaBean, nie może to być VO, ponieważ jest zmienne, czy może to być DTO? Uważa się jednak, że nie jest on przeznaczony do wszelkiego rodzaju zdalnych wywołań. Czy można to uznać za POJO?DTO vs VO
DTO - Obiekty do przesyłania danych to tylko kontenery danych, które służą do transportu danych między warstwami i warstwami.
DTO służyło głównie do wydajnego przesyłania danych w sieci, może to być nawet z JVM do innego JVM.
DTO są często
java.io.Serializable
- w celu przesyłania danych przez JVM.VO - Obiekt wartości [1] [2] reprezentuje stały zestaw danych i jest podobny do wyliczenia Java. Tożsamość obiektu wartości opiera się raczej na jego stanie niż na tożsamości obiektu i jest niezmienna. Przykładem w świecie rzeczywistym jest Color.RED, Color.BLUE, SEX.FEMALE itp.
POJO vs JavaBeans
[1] Java-Beanness POJO polega na tym, że wszystkie jego prywatne atrybuty są dostępne za pośrednictwem publicznych programów pobierających i ustawiających, które są zgodne z konwencjami JavaBeans. na przykład
[2] JavaBeans musi implementować Serializable i mieć konstruktor bez argumentów, podczas gdy w POJO nie ma tych ograniczeń.
źródło
Gruntownie,
DTO: „Obiekty przesyłania danych” mogą przemieszczać się między oddzielnymi warstwami w architekturze oprogramowania.
Lektor: „Obiekty wartości” przechowują obiekty takie jak liczba całkowita, pieniądze itp.
POJO: Plain Old Java Object, który nie jest obiektem specjalnym.
Java Beans: wymaga
Java Class
możliwości serializacji, posiadaniano-arg
konstruktora oraz metody pobierającej i ustawiającej dla każdego polaźródło
Ziarna Java to nie to samo, co komponenty EJB.
Specyfikacja JavaBeans w Javie 1.0 była próbą Sun pozwalającą na manipulowanie obiektami Java w środowisku IDE, które wyglądało jak VB. Dla obiektów zakwalifikowanych jako „Java Beans” określono zasady:
EJB przyszły później. Łączą rozproszone komponenty i model transakcyjny, działając w kontenerze, który zarządza wątkami, pula, cykl życia i świadczy usługi. Są dalekie od Java Beans.
DTO powstały w kontekście Java, ponieważ ludzie odkryli, że specyfikacja EJB 1.0 była zbyt „gadatliwa” z bazą danych. Zamiast obchodzić każdy element danych, ludzie pakowaliby je masowo do komponentów Java Beans i wysyłali.
POJO były reakcją na EJB.
źródło
POJO : Jest to plik (klasa) java, który nie rozszerza ani nie implementuje żadnego innego pliku (klasy) java.
Fasola : jest to plik java (klasa), w którym wszystkie zmienne są prywatne, metody są publiczne, a do uzyskiwania dostępu do zmiennych używane są odpowiednie metody pobierające i ustawiające.
Normalna klasa : jest to plik java (klasa), który może składać się ze zmiennych publicznych / prywatnych / domyślnych / chronionych i który może, ale nie musi, rozszerzyć lub zaimplementować inny plik java (klasa).
źródło
Pierwsza rozmowa o
Normalna klasa - oznacza to, że każda klasa definiuje normalnie w Javie, oznacza to, że tworzysz różne właściwości metod itp.
Fasola - Fasola to nic innego, to tylko obiekt tej konkretnej klasy. Za pomocą tej fasoli możesz uzyskać dostęp do swojej klasy Java tak samo jak obiekt. .
a potem rozmowa o ostatnim POJO
POJO - POJO to klasa, która nie ma żadnych usług, ma tylko domyślny konstruktor i własność prywatną oraz te właściwości do ustawiania odpowiadającej wartości metody ustawiającej i pobierającej. To krótka forma Plain Java Object.
źródło
różnica między wartością wzorzec-obiekt-wzorzec i wzorzec transferu danych
źródło