Nie jestem pewien różnicy. Używam Hibernacji, aw niektórych książkach używają JavaBean i POJO jako terminu wymiennego. Chcę wiedzieć, czy istnieje różnica, nie tylko w kontekście hibernacji, ale jako ogólne pojęcia.
źródło
Nie jestem pewien różnicy. Używam Hibernacji, aw niektórych książkach używają JavaBean i POJO jako terminu wymiennego. Chcę wiedzieć, czy istnieje różnica, nie tylko w kontekście hibernacji, ale jako ogólne pojęcia.
JavaBean przestrzega pewnych konwencji. Nazwy getter / setter, posiadanie publicznego domyślnego konstruktora, możliwość szeregowania itp. Zobacz Konwencje JavaBeans, aby uzyskać więcej informacji.
POJO (zwykły stary obiekt Java) nie jest rygorystycznie zdefiniowany. Jest to obiekt Java, który nie wymaga implementacji określonego interfejsu lub wywodzi się z konkretnej klasy bazowej, ani nie korzysta z określonych adnotacji w celu zachowania zgodności z danym frameworkiem i może być dowolnym dowolnym (często stosunkowo prostym) Obiekt Java.
Wszystkie JavaBeans są POJO, ale nie wszystkie POJO są JavaBeans.
JavaBean to obiekt Java, który spełnia pewne konwencje programowania:
źródło
Serializable
.Według Martina Fowlera POJO to obiekt, który zawiera logikę biznesową, podczas gdy komponent bean (z wyjątkiem definicji już podanej w innych odpowiedziach) jest niewiele więcej niż pojemnikiem do przechowywania danych, a operacje dostępne na obiekcie po prostu ustawiają i pobierają dane.
źródło
POJO: Jeśli klasa może być wykonana z bazowym JDK, bez żadnej obsługi zewnętrznych bibliotek stron trzecich, wówczas nazywana jest POJO
JavaBean: Jeśli klasa zawiera tylko atrybuty z akcesoriami (ustawiającymi i pobierającymi), są one nazywane javabeans. Ziarna Java na ogół nie będą zawierać żadnej logiki biznesowej, a raczej te, które służą do przechowywania niektórych danych.
Wszyscy Jawajczycy są POJO, ale wszyscy POJO nie są Jawajczycy
źródło
Pojo - Zwykły stary obiekt Java
klasa pojo to zwykła klasa bez żadnych specjalizacji, klasa całkowicie luźno powiązana z technologią / frameworkiem. klasa nie implementuje z technologii / frameworka i nie rozciąga się od technologii / frameworku api, ta klasa nazywa się klasą pojo.
klasa pojo może implementować interfejsy i rozszerzać klasy, ale superklasa lub interfejs nie powinny być technologią / ramą.
Przykłady:
1.
Klasa ABC nie implementuje ani nie rozszerza technologii / frameworka, dlatego jest to klasa pojo.
2)
Klasa ABC wychodząca z apletu technologii serwletowej, dlatego nie jest to klasa pojo.
3)
Klasa ABC implementuje z rmi api, dlatego nie jest to klasa pojo.
4
interfejs ten jest częścią języka Java, a nie częścią technologii / frameworku. więc jest to klasa pojo.
5
tutaj wątek jest także klasą języka Java, więc jest to również klasa pojo.
6.
jeśli klasa Test rozszerza lub implementuje z technologii / frameworka, to ABC również nie jest klasą pojo, ponieważ dziedziczy właściwości klasy Test. jeśli klasa testowa nie jest klasą pojo, to klasa ABC również nie jest klasą pojo.
7
teraz ten punkt jest wyjątkowym przypadkiem
@Entity
jest adnotacją podaną przez hibernację api lub jpa api, ale nadal możemy nazwać tę klasę klasą pojo. klasa z adnotacjami podanymi z technologii / frameworka w tym wyjątkowym przypadku nazywana jest klasą pojo.źródło
Specjalizacje wymienione poniżej z uzasadnieniem
źródło
POJOS
z pewnymi konwencjami (getter / setter, publiczny konstruktor bez argumentu, zmienne prywatne) i działają (np. są używane do odczytu danych według formularza)JAVABEANS
.źródło
Podsumowując: podobieństwa i różnice to:
Wszystkie ziarna JAVA są POJO, ale nie wszystkie POJO są ziarnami JAVA.
źródło
Widziałeś formalne definicje powyżej, bo wszystkie są warte.
Ale nie przejmuj się definicjami. Spójrzmy bardziej na sens rzeczy tutaj.
JavaBeans są używane w aplikacjach Java dla przedsiębiorstw, w których użytkownicy często uzyskują dostęp do danych i / lub kodu aplikacji zdalnie, tj. Z serwera (przez sieć lub sieć prywatną) za pośrednictwem sieci. W związku z tym dane muszą być przesyłane strumieniowo w formacie szeregowym do lub z komputerów użytkowników - stąd potrzeba obiektów Java EE do implementacji interfejsu Serializable. Taki charakter JavaBean nie różni się niczym od obiektów aplikacji Java SE, których dane są wczytywane lub zapisywane w systemie plików. Niezawodne używanie klas Java w sieci z szeregu kombinacji komputer-użytkownik systemu operacyjnego wymaga także przyjęcia konwencji w zakresie ich obsługi. Stąd wymóg implementowania tych klas jako publicznych, z prywatnymi atrybutami, konstruktorem bez argumentów oraz znormalizowanymi modułami pobierającymi i ustawiającymi.
Aplikacje Java EE będą również korzystać z klas innych niż te, które zostały zaimplementowane jako JavaBeans. Mogą być one wykorzystywane do przetwarzania danych wejściowych lub organizowania danych wyjściowych, ale nie będą wykorzystywane do obiektów przesyłanych przez sieć. Dlatego powyższe rozważania nie muszą być stosowane do paska, który jest poprawny jako obiekty Java. Te ostatnie klasy są nazywane POJO - Plain Old Java Objects.
Podsumowując, można zobaczyć Java Beans jako obiekty Java przystosowane do użycia w sieci.
Od 1995 roku w świecie oprogramowania jest bardzo dużo szumu - i niemało humbug.
źródło