Entity Manager Factory

Any JPA-enabled application will require at least one EntityManagerFactory . Typically applications create one per datastore being utilised. An EntityManagerFactory provides access to EntityManager s which allow objects to be persisted, and retrieved. The EntityManagerFactory can be configured to provide particular behaviour.

The simplest way of creating an EntityManagerFactory in a J2SE environment is as follows

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

...

EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnitName);

So you simply provide the name of the persistence-unit which defines the properties, classes, metadata etc to be used. An alternative is to specify the properties to use along with the persistence-unit name. In that case the passed properties will override any that are specified for the persistence unit itself.

TODO Add a description of the available properties

Standard JPA Properties
Parameter Values Description
javax.persistence.provider Class name of the provider to use. DataNucleus has a provider name of org.datanucleus.jpa.PersistenceProviderImpl
javax.persistence.transactionType RESOURCE_LOCAL | JTA Type of transactions to use. In J2SE the default is RESOURCE_LOCAL. In J2EE the default is JTA.
javax.persistence.jtaDataSource JNDI name of a (transactional) JTA data source.
javax.persistence.nonJtaDataSource JNDI name of a (non-transactional) data source.


Extension DataNucleus Properties

DataNucleus provides many properties to extend the control that JPA gives you. These can be used alongside the above standard JPA properties, but will only work with DataNucleus. Please consult the Persistence Properties Guide for full details. In particular, look at the properties for specifying the datastore to be used including datanucleus.ConnectionURL , datanucleus.ConnectionDriver , datanucleus.ConnectionUserName , datanucleus.ConnectionPassword .