Obiekty danych Java - Java Data Objects

Java Data Objects ( JDO ) to specyfikacja trwałości obiektów Java . Jedną z jego cech jest przejrzystość usług trwałości w modelu domeny . Stałe obiekty JDO to zwykłe klasy języka programowania Java ( POJO ); nie ma wymogu implementacji niektórych interfejsów lub rozszerzania ich ze specjalnych klas. JDO 1.0 zostało opracowane w ramach procesu społecznościowego Java jako JSR 12 . JDO 2.0 zostało opracowane pod JSR 243 i zostało wydane 10 maja 2006. JDO 2.1 zostało ukończone w lutym 2008 roku, opracowane przez projekt Apache JDO . JDO 2.2 zostało wydane w październiku 2008. JDO 3.0 zostało wydane w kwietniu 2010.

Trwałość obiektów jest definiowana w zewnętrznych metaplikach XML , które mogą mieć rozszerzenia specyficzne dla dostawcy. Dostawcy JDO dostarczają programistom wzmacniacze , które modyfikują skompilowane pliki klas Java, aby można je było w przejrzysty sposób utrwalać. (Należy zauważyć, że rozszerzenie kodu bajtowego nie jest wymagane przez specyfikację JDO, chociaż jest to powszechnie stosowany mechanizm implementacji wymagań specyfikacji JDO.) Obecnie dostawcy JDO oferują kilka opcji trwałości, np. RDBMS , OODB lub pliki .

Rozszerzone klasy JDO można przenosić w ramach implementacji różnych dostawców. Po ulepszeniu klasa Java może być używana z produktem JDO dowolnego dostawcy.

JDO jest zintegrowany z Java EE na kilka sposobów. Przede wszystkim implementacja dostawcy może być dostarczona jako złącze JEE . Po drugie, JDO może działać w kontekście usług transakcyjnych JEE .

JDO, EJB3, JPA

Specyfikacja Enterprise JavaBeans 3.0 (EJB3) obejmowała również trwałość, podobnie jak EJB v2 z Entity Beans . Występowały konflikty norm między dwoma organami normalizacyjnymi w zakresie pierwszeństwa. JDO ma kilka komercyjnych wdrożeń.

Ostatecznie trwałość została „wyłamana” z „EJB3 Core” i utworzono nowy standard, Java Persistence API (JPA). JPA używa javax.persistence pakietu i został najpierw określony w osobnym dokumencie w specyfikacji EJB3 JSR 220 , ale później został przeniesiony do własnej specyfikacji JSR 317 . Co istotne, niejavax.persistence będzie wymagał kontenera EJB, a zatem będzie działał również w środowisku Java SE, jak zawsze JDO. JPA jest jednak standardem mapowania obiektowo-relacyjnego (ORM), podczas gdy JDO jest zarówno standardem mapowania obiektowo-relacyjnego, jak i standardem przezroczystego utrwalania obiektów. Z punktu widzenia API JDO jest niezależne od technologii bazowego magazynu danych, podczas gdy JPA jest ukierunkowane na magazyny danych RDBMS (chociaż istnieje kilku dostawców JPA, którzy obsługują dostęp do nierelacyjnych magazynów danych za pośrednictwem interfejsu API JPA, takich jak DataNucleus i ObjectDB).

Wiodące komercyjne implementacje JDO i projekty open source oferują również implementację JPA API jako alternatywny dostęp do ich podstawowych silników trwałości, wcześniej udostępnianych wyłącznie za pośrednictwem JDO w oryginalnych produktach. Istnieje wiele implementacji JDO typu open source.

Nowe funkcje w JDO w wersji 2 nie zostały znalezione w wersji 1

  • Koncepcja grafów obiektów odłączonych
  • Standaryzowane deskryptory mapowania ORM (dla implementacji JDO opartych na ORM)
  • Ulepszenia JDOQL (postać z jednym ciągiem; wymagana obsługa większej liczby ciągów, map i metod matematycznych)
  • Uzyskaj np. Connection Od javax.jdo.PersistenceManager
  • Więcej: Nazwane zapytania (pm.newNamedQuery), FetchPlan, Sekwencja, Usuń według zapytania, wiele obiektów użytkownika na PM

Implementacje referencyjne JDO

Zobacz też

Bibliografia

  • Jordan, David; Russell, Craig (22 kwietnia 2003). Java Data Objects (1st ed.). O'Reilly Media . p. 384. ISBN   0-596-00276-9 .
  • Tyagi, Sameer; Vorburger, Michael; McCammon, Keiron; Bobzin, Heiko (21 września 2003). Core Java Data Objects (1st ed.). Prentice Hall . p. 576. ISBN   0-13-140731-7 .
  • Ezzio, David (6 czerwca 2003). Używanie i zrozumienie obiektów danych Java (wyd. 1). Apress . p. 456. ISBN   1-59059-043-0 .

Linki zewnętrzne