A Java program consists of many different kinds of classes, including:
Classes that model business objects
Classes that serve as user interface objects
Classes that provide various kinds of glue between different parts of the application
System classes of various sorts
JDO focuses on the classes whose data has a corresponding representation in the underlying datastore: classes that represent business objects or classes that represent application-specific data that must remain persistent between application invocations.
These classes may represent data that comes from a single entity in the datastore, or they may represent data from several entities; JDO doesn’t place any limitations on where the data comes from. For example, the data may come from:
A single object in an object-oriented database
A single row of a relational database
The result of a relational database query, consisting of several rows
The merging of several tables in a relational database
The execution of a method from a data retrieval API that accesses an Enterprise Resource Planning (ERP) system
A JDO implementation maps data from its representation in the datastore to its representation in memory as a Java object, and vice versa. The mapping is based on metadata, which must be available both when the Java class is enhanced and at runtime. JDO does not standardize the mapping to a specific datastore.