The following represents a complete list of the optional JDO features supported in Kodo JDO, as well as interesting features specific to relational data stores:
All JDO lifecycle states are supported.
All JDO options are supported, with the following exceptions:
javax.jdo.option.ChangeApplicationIdentity
javax.jdo.option.NullCollection
Both datastore and application identity are supported.
Optimistic transactions, including detection of optimistic locking violations, are supported.
All Collection types are supported.
All Map types are supported, including java.util.Properties.
Arrays are supported.
JNDI storage of PersistenceManagerFactories is supported.
The Kodo JDO PersistenceManagerFactory implements the JCA specification. (Enterprise Edition only)
Query ordering is supported.
Queries not only support the contains method on collection fields, but also the containsKey and containsValue methods on Map fields.
PersistenceManagers use a soft caching strategy to increase cache hits without overloading JVM memory usage.
Automatic schema generation and migration for persistent classes is included.
Automatic generation of identity classes for types using application identity is included.
Kodo JDO uses 'lazy' database reads for maximum efficiency.
Kodo JDO supports all standard relational mapping types, including 1-1, 1-M, M-M, Collection, Map, and N-M Map mappings.
Simple Collection and 1-sided M-M mappings can be configured to maintain order.
Serialization of fields to BLOB columns is supported.
Kodo JDO uses a highly customizable inheritance mapping strategy, supporting both single-table and multi-table mappings.
Large result sets are supported.
Kodo JDO offers too many opportunities for customization via extension and system plugins to enumerate here.