Jump to content

Java Data Objects

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by 24.126.115.160 (talk) at 16:19, 15 January 2011. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Java Data Objects (JDO) is a specification of Java object persistence. One of its features is a transparency of the persistent services to the domain model. JDO persistent objects are ordinary Java programming language classes (POJOs); there's no requirement for them to implement certain interfaces or extend from special classes. JDO 1.0 was developed under the Java Community Process as JSR 12. JDO 2.0 was developed under JSR 243 and was released on May 10th, 2006. JDO 2.1 was completed in Feb 2008, developed by the Apache JDO project. JDO 2.2 was released in October 2008. JDO 2.3 is in its planning stage. JDO 3.0 was released in April 2010.

Object persistence is defined in the external XML metafiles, which may have vendor-specific extensions. JDO vendors provide developers with enhancers, which modify compiled Java class files so they can be transparently persisted. (Note that byte-code enhancement is not mandated by the JDO specification, although it is the commonly used mechanism for implementing the JDO specification's requirements.) Currently, JDO vendors offer several options for persistence, e.g. to RDBMS, to OODB, to files.

JDO enhanced classes are portable across different vendors' implementation. Once enhanced, a Java class can be used with any vendor's JDO product.

JDO is integrated with Java EE in several ways. First of all, the vendor implementation may be provided as a JEE Connector. Secondly, JDO may work in the context of JEE transaction services.

JDO vs. EJB3

Enterprise Java Beans 3.0 (EJB3) specification also covered persistence, as had EJB v2 with Entity Beans. There has been standards conflict between the two standards bodies in terms of pre-eminence. JDO has several commercial implementations.

In the end, persistence has been "broken out" of "EJB3 Core", and a new standard formed, the Java Persistence API (JPA). JPA uses the javax.persistence package, and is specified in a separate document within the EJB3 JSR 220. Significantly, javax.persistence will not require an EJB container, and thus will work within a Java SE environment as well, as JDO always has. JPA, however, is an Object-relational mapping (ORM) standard, while JDO is both an Object-relational mapping standard and a transparent object persistence standard. JDO, from an API point of view, is agnostic to the technology of the underlying datastore, whereas JPA is targeted to RDBMS datastores (although there are several JPA providers that support access to non-relational datastores through the JPA API, such as EclipseLink, DataNucleus and ObjectDB).

Leading JDO commercial implementations and open source projects also offer a JPA API implementation as an alternative access to their underlying persistence engines, formerly exposed solely via JDO in the original products. There are many open source implementations of JDO.

New Features in JDO Version 2 Not Found In Version 1

  • Disconnected Object Graphs concept
  • Standardized ORM Mapping Descriptors (for ORM-based JDO Implementations)
  • JDOQL Enhancements (Single String Form; more String, Map & Math methods support mandated)
  • Get e.g. a Connection from javax.jdo.PersistenceManager
  • More: Named Queries (pm.newNamedQuery), FetchPlan, Sequence, Delete by Query, multiple User Objects on PM

JDO Reference Implementations

  • JDO 1.0 : FOStore
  • JDO 2.0 : JPOX 1.1
  • JDO 2.1 : JPOX 1.2
  • JDO 2.2 : DataNucleus AccessPlatform 1.0.1
  • JDO 3.0 : DataNucleus AccessPlatform 2.1.0

See also

Bibliography

  • Jordan, David; Russell, Craig (April 22, 2003). Java Data Objects (1st ed.). O'Reilly Media. p. 384. ISBN 0596002769.
  • Tyagi, Sameer; Vorburger, Michael; McCammon, Keiron; Bobzin, Heiko (September 21, 2003). Core Java Data Objects (1st ed.). Prentice Hall. p. 576. ISBN 0131407317.
  • Ezzio, Davimkdfgvbrnhe'hd (June 6, 2003). Using and Understanding Java Data Objects (1st ed.). Apress. p. 456. ISBN 1590590430.