Obiekty danych Java

Java Data Objects ( JDO ) to specyfikacja trwałości obiektów Java . Jedną z jego cech jest przejrzystość usług trwałości dla modelu domenowego . Trwałe obiekty JDO to zwykłe klasy języka programowania Java ( POJO ); nie ma wymogu, aby implementowały określone interfejsy lub rozszerzały specjalne klasy. JDO 1.0 został opracowany w ramach Java Community Process jako JSR 12 . JDO 2.0 został opracowany pod JSR 243 i został wydany 10 maja 2006. JDO 2.1 został ukończony w lutym 2008, opracowany 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 zdefiniowana 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ć. (Zauważ, że specyfikacja JDO nie wymaga ulepszania kodu bajtowego, chociaż jest to powszechnie używany mechanizm implementacji wymagań specyfikacji JDO.) Obecnie dostawcy JDO oferują kilka opcji trwałości, np. do RDBMS, do OODB lub do plików .

Rozszerzone klasy JDO są przenośne w implementacjach różnych dostawców. Po ulepszeniu klasa Java może być używana z produktem JDO dowolnego dostawcy.

JDO jest zintegrowane z Java EE na kilka sposobów. Przede wszystkim implementacja dostawcy może być dostarczona jako JEE Connector [ wyjaśnij ] . Po drugie, JDO może działać w kontekście usług transakcyjnych JEE .

JDO kontra EJB3 kontra JPA

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

W końcu trwałość została „wyłamana” z „EJB3 Core” i powstał nowy standard, Java Persistence API (JPA). JPA używa javax.persistence i po raz pierwszy został określony w oddzielnym dokumencie w specyfikacji JSR 220 EJB3 , ale później został przeniesiony do własnej specyfikacji JSR 317 . Co istotne, javax.persistence nie będzie wymagał kontenera EJB, a zatem będzie działać również w środowisku Java SE, tak jak JDO zawsze. JPA jest jednak mapowaniem obiektowo-relacyjnym (ORM), podczas gdy JDO jest zarówno standardem mapowania obiektowo-relacyjnego, jak i przejrzystym standardem trwałości obiektów. JDO, z punktu widzenia API, 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 poprzez 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 bazowych silników trwałości, które wcześniej były udostępniane wyłącznie za pośrednictwem JDO w oryginalnych produktach. Istnieje wiele implementacji JDO typu open source.

Nowych funkcji w wersji 2 JDO nie znaleziono w wersji 1

  • Koncepcja wykresów odłączonych obiektów
  • Standaryzowane deskryptory mapowania ORM (dla implementacji JDO opartych na ORM)
  • Udoskonalenia JDOQL (formularz pojedynczego ciągu; wymagana jest większa obsługa metod łańcuchowych, mapowych i matematycznych)
  • Uzyskaj np. połączenie z javax.jdo.PersistenceManager
  • Więcej: nazwane zapytania (pm.newNamedQuery), FetchPlan, sekwencja, usuwanie przez zapytanie, wiele obiektów użytkownika na PM

Implementacje referencyjne JDO

Zobacz też

Bibliografia

  •   Jordan, Dawid; Russell, Craig (22 kwietnia 2003). Obiekty danych Java (wyd. 1). O'Reilly Media . P. 384. ISBN 0-596-00276-9 .
  •   Tyagi, Sameer; Vorburger, Michael; McCammon, Keiron; Bobzin, Heiko (21 września 2003). Podstawowe obiekty danych Java (wyd. 1). Sala Prentice'a . 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