9.3. JDO API Extensions
Prev | Chapter 9. Runtime Extensions | Next

## 9.3. JDO API Extensions

The following sections outline the runtime interfaces you can use to access Kodo-specific functionality from JDO. Each interface contains services and convenience methods missing from the JDO specification. Kodo strives to use the same naming conventions and API patterns as standard JDO methods in all extensions, so that Kodo JDO APIs feel as much as possible like standard JDO APIs.

### 9.3.1. KodoPersistenceManagerFactory

The `kodo.jdo.KodoPersistenceManagerFactory` interface extends the basic `javax.jdo.PersistenceManagerFactory` with Kodo-specific features. The `KodoPersistenceManagerFactory` offers APIs to obtain managed and unmanaged `PersistenceManager`s from the same factory, to access the query cache, and to perform other Kodo-specific operations. See the interface Javadoc for details.

### 9.3.2. KodoPersistenceManager

All Kodo `PersistenceManager`s implement the `kodo.jdo.KodoPersistenceManager` interface. This interface extends the standard `javax.jdo.PersistenceManager`. Just as the standard `PersistenceManager` is the primary window into JDO runtime services, the `KodoPersistenceManager` is the primary window from JDO into Kodo-specific functionality. We strongly encourage you to investigate the API extensions this interface contains.

### 9.3.3. KodoQuery

Kodo extends JDO's standard query functionality with the `kodo.jdo.KodoQuery` interface. See its Javadoc for details on the convenience methods it provides.

### 9.3.4. KodoExtent

The `kodo.jdo.KodoExtent` offers convenience methods not found in standard `javax.jdo.Extent`s.

### 9.3.5. KodoDataStoreCache

Kodo expands JDO's standard `javax.jdo.datastore.DataStoreCache` interface with the `kodo.jdo.KodoDataStoreCache`. Section 10.1, “Data Cache” has detailed information on Kodo's data caching system, including the `KodoDataStoreCache`.

### 9.3.6. QueryResultCache

Kodo includes a JDO-flavored facade to its internal query cache. The `kodo.jdo.QueryResultCache` includes APIs much like those in the `DataStoreCache`, but acting on queries rather than persistent objects. See Section 10.1.3, “Query Cache” for details on query caching in Kodo.

### 9.3.7. KodoFetchPlan

The `kodo.jdo.KodoFetchPlan` adds additional options to the standard `kodo.jdo.FetchPlan` for fine-tuning data loading. Its APIs include large result set support and lock level control, among others.

Kodo goes one step further, extending `KodoFetchPlan` with `kodo.jdo.jdbc.JDBCFetchPlan` to add additional JDBC-specific tuning methods. Unless you have customized Kodo to use a non-relational back-end (see Section 9.9, “Non-Relational Stores”), all JDO `FetchPlan`s in Kodo implement `JDBCFetchPlan`, so feel free to cast to this interface.

### 9.3.8. KodoJDOHelper

The `kodo.jdo.KodoJDOHelper` is a static helper class that adds Kodo-specific utility methods to `javax.jdo.JDOHelper`.

Prev | Up | Next
9.2. JPA Extensions | Home | 9.4. Object Locking