JDO is still viable, despite the specification not progressing beyond 2.0 (and possibly maintenance releases), and many say that JDO's API is more powerful and more complete than the Java Persistence API's capabilities.
As well as implementing all of the mandatory parts of the JDO2 specification, JPOX 1.1 also implements the vast majority of the optional parts and provides significant extensions over the JDO2 specification. The JDO2 API and TCK are managed by the Apache JDO Project.
Some of the features provided in JPOX and in particular in version 1.1:
- Released under the Apache2 license.
- Usable with JDK 1.3 or above.
- Usage in stand-alone application, J2EE non-managed environments or J2EE managed environments (using a JCA adapter - known to work on current WebLogic, WebSphere, and JBoss servers)
- Support for schema generation, and use of existing schema, providing full control over foreign keys, indexes, candidate keys and primary keys.
- Support for both application and datastore identity.
- Numerous inbuilt identity generation strategies.
- Support for persisting a very wide range of Java types, including interface/Object fields, and many many array types.
- Support for 1-1, 1-N, M-N, uni/bidirectional, and compound identity relations supporting the full range of O/R mapping.
- Support for serialising fields.
- Support for embedding objects, embedding collections and embedding maps.
- Support for secondary tables.
- Support for attachment/detachment of objects from the persistence graph.
- Support for Datastore, Optimistic and XA transactions
- Support for persisting Java5 Enums, Oracle Spatial objects, and Oracle XMLType objects.
- User-defined fetch groups, allowing dynamic control over what is retrieved and when.
- Querying using JDOQL (including a large number of method extensions), or SQL
- JDOQL aggregates and projections.
- Support for named queries.
- Support for the vast majority of RDBMS available on the market today, including support for Views, and stored procedures.
- Significant performance improvements over JPOX 1.0
- Own byte-code enhancer providing complete JDO2 compatibility and default constructor addition (meaning there are no restrictions on user classes for JDO persistence when this enhancer).
- Pluggable framework for connection pooling with plugins for DBCP and C3P0.
- Pluggable framework for external (Level2) caching with plugins for Tangosol, EHCache, OSCache and SwarmCache
- Pluggable framework for extending JDOQL and supporting new persistent types.
- Support for Eclipse, Maven, Spring and others.
- Supported by Javelin for creating JDO MetaData.
- Supported by Elver for persistence of Eclipse EMF models.