When you are using an RDBMS datastore you need to specify how your class will map on to the relational datastore. This part is termed Object-Relational Mapping . This is not required for other types of datastore. When you are persisting to RDBMS datastores you are mapping a series of objects into a series of datastore tables in a schema . These tables are interrelated using foreign-keys . With JPA1 you can define almost fully this object-relational mapping in the MetaData (or in annotations if you so wish).
The design of the persistence layer of an application requiring object-relational mapping can be approached in 3 ways.
DataNucleus can be used in all of these modes, though provides significant assistance for Forward Mapping cases. In particular, when using this mode you can use the DataNucleus SchemaTool to generate the datastore schema, based on a set of input classes and MetaData files. It should be noted though that DataNucleus SchemaTool also provides modes of operation for updating an existing schema, and hence can also be used for Meet in the Middle Mapping . Additionally, it can be used as a validation mechanism when designing your system in Reverse Mapping mode, where it will inform you of inconsistencies between your classes and your datastore schema.