Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 which accompanies this distribution. The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html and the Eclipse Distribution License is available at http://www.eclipse.org/org/documents/edl-v10.php. Contributors: Linda DeMichiel - Java Persistence 2.1 Linda DeMichiel - Java Persistence 2.0
/******************************************************************************* * Copyright (c) 2008 - 2013 Oracle Corporation. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Linda DeMichiel - Java Persistence 2.1 * Linda DeMichiel - Java Persistence 2.0 * ******************************************************************************/
package javax.persistence; import java.util.List; import java.util.Map; import java.util.Set; import java.util.HashSet; import javax.persistence.spi.PersistenceProvider; import javax.persistence.spi.PersistenceProviderResolver; import javax.persistence.spi.PersistenceProviderResolverHolder; import javax.persistence.spi.LoadState;
Bootstrap class that is used to obtain an EntityManagerFactory in Java SE environments. It may also be used to cause schema generation to occur.

The Persistence class is available in a Java EE container environment as well; however, support for the Java SE bootstrapping APIs is not required in container environments.

The Persistence class is used to obtain a PersistenceUtil instance in both Java EE and Java SE environments.

Since:Java Persistence 1.0
/** * Bootstrap class that is used to obtain an {@link EntityManagerFactory} * in Java SE environments. It may also be used to cause schema * generation to occur. * * <p> The <code>Persistence</code> class is available in a Java EE * container environment as well; however, support for the Java SE * bootstrapping APIs is not required in container environments. * * <p> The <code>Persistence</code> class is used to obtain a {@link * javax.persistence.PersistenceUtil PersistenceUtil} instance in both * Java EE and Java SE environments. * * @since Java Persistence 1.0 */
public class Persistence {
Create and return an EntityManagerFactory for the named persistence unit.
Params:
  • persistenceUnitName – the name of the persistence unit
Returns:the factory that creates EntityManagers configured according to the specified persistence unit
/** * Create and return an EntityManagerFactory for the named * persistence unit. * * @param persistenceUnitName * the name of the persistence unit * @return the factory that creates EntityManagers configured according to * the specified persistence unit */
public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName) { return createEntityManagerFactory(persistenceUnitName, null); }
Create and return an EntityManagerFactory for the named persistence unit using the given properties.
Params:
  • persistenceUnitName – the name of the persistence unit
  • properties – Additional properties to use when creating the factory. These properties may include properties to control schema generation. The values of these properties override any values that may have been configured elsewhere.
Returns:the factory that creates EntityManagers configured according to the specified persistence unit.
/** * Create and return an EntityManagerFactory for the named persistence unit * using the given properties. * * @param persistenceUnitName * the name of the persistence unit * @param properties * Additional properties to use when creating the factory. * These properties may include properties to control * schema generation. The values of these properties override * any values that may have been configured elsewhere. * @return the factory that creates EntityManagers configured according to * the specified persistence unit. */
public static EntityManagerFactory createEntityManagerFactory(String persistenceUnitName, Map properties) { EntityManagerFactory emf = null; PersistenceProviderResolver resolver = PersistenceProviderResolverHolder.getPersistenceProviderResolver(); List<PersistenceProvider> providers = resolver.getPersistenceProviders(); for (PersistenceProvider provider : providers) { emf = provider.createEntityManagerFactory(persistenceUnitName, properties); if (emf != null) { break; } } if (emf == null) { throw new PersistenceException("No Persistence provider for EntityManager named " + persistenceUnitName); } return emf; }
Create database schemas and/or tables and/or create DDL scripts as determined by the supplied properties.

Called when schema generation is to occur as a separate phase from creation of the entity manager factory.

Params:
  • persistenceUnitName – the name of the persistence unit
  • map – properties for schema generation; these may also contain provider-specific properties. The value of these properties override any values that may have been configured elsewhere..
Throws:
  • PersistenceException – if insufficient or inconsistent configuration information is provided or if schema generation otherwise fails.
Since:Java Persistence 2.1
/** * Create database schemas and/or tables and/or create DDL * scripts as determined by the supplied properties. * <p> * Called when schema generation is to occur as a separate phase * from creation of the entity manager factory. * <p> * @param persistenceUnitName the name of the persistence unit * @param map properties for schema generation; these may * also contain provider-specific properties. The * value of these properties override any values that * may have been configured elsewhere.. * @throws PersistenceException if insufficient or inconsistent * configuration information is provided or if schema * generation otherwise fails. * * @since Java Persistence 2.1 */
public static void generateSchema(String persistenceUnitName, Map map) { PersistenceProviderResolver resolver = PersistenceProviderResolverHolder.getPersistenceProviderResolver(); List<PersistenceProvider> providers = resolver.getPersistenceProviders(); for (PersistenceProvider provider : providers) { if (provider.generateSchema(persistenceUnitName, map)) { return; } } throw new PersistenceException("No Persistence provider to generate schema named " + persistenceUnitName); }
Return the PersistenceUtil instance
Returns:PersistenceUtil instance
Since:Java Persistence 2.0
/** * Return the PersistenceUtil instance * @return PersistenceUtil instance * @since Java Persistence 2.0 */
public static PersistenceUtil getPersistenceUtil() { return new PersistenceUtilImpl(); }
Implementation of PersistenceUtil interface
Since:Java Persistence 2.0
/** * Implementation of PersistenceUtil interface * @since Java Persistence 2.0 */
private static class PersistenceUtilImpl implements PersistenceUtil { public boolean isLoaded(Object entity, String attributeName) { PersistenceProviderResolver resolver = PersistenceProviderResolverHolder.getPersistenceProviderResolver(); List<PersistenceProvider> providers = resolver.getPersistenceProviders(); for (PersistenceProvider provider : providers) { LoadState loadstate = provider.getProviderUtil().isLoadedWithoutReference(entity, attributeName); if(loadstate == LoadState.LOADED) { return true; } else if (loadstate == LoadState.NOT_LOADED) { return false; } // else continue } //None of the providers could determine the load state try isLoadedWithReference for (PersistenceProvider provider : providers) { LoadState loadstate = provider.getProviderUtil().isLoadedWithReference(entity, attributeName); if(loadstate == LoadState.LOADED) { return true; } else if (loadstate == LoadState.NOT_LOADED) { return false; } // else continue } //None of the providers could determine the load state. return true; } public boolean isLoaded(Object entity) { PersistenceProviderResolver resolver = PersistenceProviderResolverHolder.getPersistenceProviderResolver(); List<PersistenceProvider> providers = resolver.getPersistenceProviders(); for (PersistenceProvider provider : providers) { LoadState loadstate = provider.getProviderUtil().isLoaded(entity); if(loadstate == LoadState.LOADED) { return true; } else if (loadstate == LoadState.NOT_LOADED) { return false; } // else continue } //None of the providers could determine the load state return true; } }
This final String is deprecated and should be removed and is only here for TCK backward compatibility
Since:Java Persistence 1.0
Deprecated:
/** * This final String is deprecated and should be removed and is only here for TCK backward compatibility * @since Java Persistence 1.0 * @deprecated */
@Deprecated public static final String PERSISTENCE_PROVIDER = "javax.persistence.spi.PeristenceProvider";
This instance variable is deprecated and should be removed and is only here for TCK backward compatibility
Since:Java Persistence 1.0
Deprecated:
/** * This instance variable is deprecated and should be removed and is only here for TCK backward compatibility * @since Java Persistence 1.0 * @deprecated */
@Deprecated protected static final Set<PersistenceProvider> providers = new HashSet<PersistenceProvider>(); }