JPA defines an interface (or API) to persist normal Java objects (or POJO's in some peoples
terminology) to an
RDBMS datastore
. While DataNucleus allows you to use JPA against any of its
supported datastores
if you are intent on using JPA for persistence to a non-RDBMS datastore we highly
recommend that you think deeply about that decision, and consider JDO
instead
since the design of JPA and in particular JPQL force assumptions to be made in how the
persistence/query process operates.

JPA uses a definition of how the users Java objects map to the chosen datastore structure. This mapping
can be provided by way of XML metadata, or alternatively by having Java annotations in the code.
The whole point of having a
standard
mapping and API is that users can, in principle, swap between
implementations of JPA without changing their code.
Make sure you have
datanucleus-api-jpa.jar
in your CLASSPATH for this API.
The process of mapping a class can be split into the following areas