Appendix C. Optional JDO Features
Prev |  | Next

## Appendix C. Optional JDO Features

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.

Prev | Up | Next
Appendix B. JDO Resources | Home | Appendix D. SQL Types