DataNucleus is specification driven, not just implementing specifications but also passing whatever specification compatibility (e.g TCK) there is available. The primary features of the DataNucleus Access Platform releases are shown below.
| Feature | Spec | Ver 1.0 | Ver 1.1 | Ver 2.0 | Ver 2.1 | Ver 2.2 | Ver 3.0 |
|---|---|---|---|---|---|---|---|
| JDO2 compliant | JDO2 | ||||||
| JDO3 compliant | JDO3 | ||||||
| JPA1 compliant | JPA1 | ||||||
| JPA2 compliant | JPA2 | ||||||
| JDK required | 1.3+ | 1.5+ | 1.5+ | 1.5+ | 1.5+ | 1.5+ | |
| Class Persistence | |||||||
| Byte-Code Enhancement of classes | JDO1, JDO2 | ||||||
| Byte-Code Compatibility | JDO1 | ||||||
| Custom enhancer | |||||||
| Enhancement of Persistence-Aware classes | JDO | ||||||
| Persistent fields | JDO, JPA | ||||||
| Persistent properties | JDO, JPA | ||||||
| Annotation support | JDO, JPA | ||||||
| Metadata API | JDO | ||||||
| Enhancer API | JDO | ||||||
| Enhancement during compilation | |||||||
| JDO Functionality | |||||||
| Application identity | JDO1, JDO2 | ||||||
| Datastore identity | JDO1, JDO2 | ||||||
| Nondurable identity [1] | JDO1, JDO2 | ||||||
| Flexible choice of identity generators | JDO2 | ||||||
| Attach/Detach of instances | JDO2 | ||||||
| Pessimistic (datastore) transactions | JDO1, JDO2 | ||||||
| Optimistic transactions | JDO1, JDO2 | ||||||
| Nontransactional Read | JDO1, JDO2 | ||||||
| Nontransactional Write | JDO1, JDO2 | ||||||
| Retain values | JDO1, JDO2 | ||||||
| Restore values | JDO1, JDO2 | ||||||
| Multithreaded PM | JDO1, JDO2 | ||||||
| J2EE Integration | JDO1, JDO2 | ||||||
| Lifecycle listener mechanism | JDO2 | ||||||
| Level 2 Cache | JDO2, JPA2 | ||||||
| Level 2 Cache pluggable | |||||||
| XA transactions | |||||||
| JPA Functionality | |||||||
| Persistence API | JPA | ||||||
| Application identity | JPA | ||||||
| Flexible choice of identity generators | JPA | ||||||
| Attach/Detach of instances | JPA | ||||||
| Optimistic transactions | JPA | ||||||
| Callback listener mechanism | JPA | ||||||
| Level 2 Cache | JPA2 | ||||||
| XA transactions | |||||||
| Persistable Datatypes | |||||||
| Interfaces support | JDO1, JDO2 | ||||||
| Collection support | JDO, JPA | ||||||
| Set Support | JDO, JPA | ||||||
| List support | JDO, JPA | ||||||
| Map support | JDO, JPA | ||||||
| Array support | JDO, [JPA] | ||||||
| Second Class PersistenceCapable objects | JDO | ||||||
| Spatial Type support | |||||||
| User-Defined Type support | |||||||
| Querying Capability | |||||||
| JDOQL Query Language | JDO1, JDO2 | ||||||
| JDOQL Single-String Query | JDO2 | ||||||
| JDOQL Typesafe Query | JDO3.1 | ||||||
| JDOQL Extensions | |||||||
| JDOQL Subqueries | JDO2.1+ | ||||||
| SQL Query Language | JDO2, JPA1 | ||||||
| JPQL Query Language | JPA | ||||||
| Named Queries | JDO2, JPA1 | ||||||
| Query Compilation Cache | |||||||
| Query Results Cache | |||||||
| Datastore Support | |||||||
| DB4O Datastores | |||||||
| NeoDatis Datastores | |||||||
| Excel Documents | |||||||
| ODF Documents | |||||||
| XML Documents | |||||||
| Google AppEngine/Datastore | |||||||
| HBase Datastores | |||||||
| MongoDB Datastores | |||||||
| JSON Datastores | |||||||
| Amazon S3 Datastores | |||||||
| Google Storage | |||||||
| LDAP Datastores | |||||||
| RDBMS Datastores | |||||||
| Support for RDBMS Views | |||||||
| Support for RDBMS Stored Procedures | |||||||
| Schema Generation (RDBMS) | JDO2 | ||||||
| Existing Schema | |||||||
| Read-Only/Fixed Schema | |||||||
| O/R Mapping Support | |||||||
| 1-1 O/R mappings | JDO, JPA | ||||||
| 1-N O/R mappings | JDO, JPA | ||||||
| M-N O/R mappings | JDO, JPA | ||||||
| Compound Identity Relationships | JDO | ||||||
| "Managed Relationships" | JDO | ||||||
| Embedded Fields | JDO, JPA | ||||||
| Serialised Fields | JDO, JPA | ||||||
| Secondary tables | JDO, JPA | ||||||
| Support for BLOB/CLOB | JDO, JPA | ||||||
| Integration/Tooling | |||||||
| OSGi bundles | |||||||
| Spring Framework | |||||||
| Tapestry | |||||||
| Ant | |||||||
| Maven2 | |||||||
| Eclipse | |||||||
| NetBeans | |||||||
| IntelliJ | |||||||
| L2 Cache : Oracle Coherence, EHCache, Cacheonix, JCache | |||||||
| RDBMS Connection Pooling : DBCP, C3P0, Proxool, BoneCP | |||||||
[1] = partial support for nondurable identity : persistence but not update/delete