3.2. Enhancement
Prev | Chapter 3. Creating Persistent Classes | Next

## 3.2. Enhancement

As discussed in the JDO Overview, JDO uses a process called enhancement to prepare persistent classes for management by the JDO runtime. The Kodo JDO enhancer is a command-line tool that can be invoked via the included `jdoc` script or via its java class, `com.solarmetric.kodo.enhance.JDOEnhancer`. The preferred method of enhancement is the `jdoc` script, which also validates the class metadata and points out any obvious inconsistencies.

The enhancer accepts the standard set of command-line arguments defined by the configuration framework. Like the `appidtool`, each additional argument to the enhancer must be either the full name of a persistent class, the `.class` file of a persistent class, or a `.jdo` metadata file listing one or more persistent classes.

You can run the enhancer over classes that have already been enhanced, in which case it will not further modify the class. You can also run it over classes that are not persistence-capable, in which case it will treat the class as persistence-aware.

Note that the enhancement process for subclasses introduces dependencies on the persistent parent class being enhanced. This is normally not problematic; however, when running the enhancer multiple times over a subclass whose parent class is not yet enhanced, class loading errors can occur. In the event of a class load error, simply re-compile and re-enhance the offending classes.

Example 3.2. Using the Kodo JDO Enhancer

The enhancer is used like the `appidtool`.

    java com.solarmetric.kodo.enhance.JDOEnhancer com.solarmetric.examples.Person
    java com.solarmetric.kodo.enhance.JDOEnhancer -properties myapp.properties package.jdo
    jdoc -licenseKey xxx-yyy-zzz com/solarmetric/examples/*.jdo
    jdoc com.solarmetric.examples.Person Employee.class com/solarmetric/examples/Project.jdo

Prev | Up | Next
Chapter 3. Creating Persistent Classes | Home | 3.3. Auto-Generating Classes from a Schema