All variants of JDO support specification of persistence using XML MetaData. JDO 2.1+ adds on the ability to specify persistence using Java annotations.

XML MetaData

JDO expects any XML MetaData to be specified in a file or files in particular positions in the file system. For example, if you have a class com.mycompany.sample.MyExample, JDO will look for any of the following files until it finds one (in the order stated) :

  1. META-INF/package.jdo
  2. WEB-INF/package.jdo
  3. package.jdo
  4. com/package.jdo
  5. com/mycompany/package.jdo
  6. com/mycompany/sample/package.jdo
  7. com/mycompany/sample/MyExample.jdo

In addition to specifying XML MetaData in a jdo file, if defining O/R mapping information you can also split this out into an ORM file. The locations for ORM files are similar in nature to those for JDO files.

  1. META-INF/package-{mapping}.orm
  2. WEB-INF/package-{mapping}.orm
  3. package-{mapping}.orm
  4. com/package-{mapping}.orm
  5. com/mycompany/package-{mapping}.orm
  6. com/mycompany/sample/package-{mapping}.orm
  7. com/mycompany/sample/MyExample-{mapping}.orm

where {mapping} is a property specified by the user and may be “mysql” for ORM information for MySQL datastores, and “oracle” for ORM information for Oracle datastores, and so on.

Annotations

JDO 2.1+ added support for annotations. Classes and fields/properties can be annotated defining the persistence and, optionally, any ORM information.