Enhancement Effects on Your Code

It is important for you to understand how enhancement affects your persistent classes. Enhancement does not alter the logic or functional behavior that you have defined. It adds code to mediate all access to a field to ensure that its value has been read from the datastore and that any modifications are tracked. You will not see any behavioral differences between transient instances of enhanced classes and transient instances of the same nonenhanced classes.

The PersistenceCapable interface is designed to avoid name conflicts with fields and methods that you define. All of its declared method names are prefixed with "jdo“. To avoid selecting a name the enhancer uses, you should not declare a persistent class with fields or methods that start with "jdo“. The reference-enhancement contract adds additional methods and fields that begin with "jdo" to your classes.

The enhancer does not change the behavior of introspection. All of the fields and methods added to an enhanced class are exposed when you use the Java reflection APIs.

Your enhanced classes will have dependencies on the JDO JDOImplHelper , StateManager , and PersistenceCapable interfaces, defined in the javax.jdo.spi package. Therefore, your enhanced classes need to have the jdo.jar file that contains their definitions available in your classpath at runtime.

Class enhancement will not impact source-line-level debugging. You can debug your enhanced classes using the line numbers of your original ...

Get Java Data Objects now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.