javax.persistence.spi

## Interface PersistenceProvider

All Known Implementing Classes:
  OSGiProviderResolver

    public interface PersistenceProvider

Interface implemented by the persistence provider.

It is invoked by the container in Java EE environments and by the `Persistence` class in Java SE environments to create an `EntityManagerFactory` and/or to cause schema generation to occur.

Since:
  Java Persistence 1.0

### Method Summary

All Methods Instance Methods Abstract Methods
`EntityManagerFactory` `createContainerEntityManagerFactory(PersistenceUnitInfo info, java.util.Map map)` Called by the container when an `EntityManagerFactory` is to be created.
`EntityManagerFactory` `createEntityManagerFactory(java.lang.String emName, java.util.Map map)` Called by `Persistence` class when an `EntityManagerFactory` is to be created.
`void` `generateSchema(PersistenceUnitInfo info, java.util.Map map)` Create database schemas and/or tables and/or create DDL scripts as determined by the supplied properties.
`boolean` `generateSchema(java.lang.String persistenceUnitName, java.util.Map map)` Create database schemas and/or tables and/or create DDL scripts as determined by the supplied properties.
`ProviderUtil` `getProviderUtil()` Return the utility interface implemented by the persistence provider.

### Method Detail

#### createEntityManagerFactory

    EntityManagerFactory createEntityManagerFactory(java.lang.String emName,
                                                    java.util.Map map)

Called by `Persistence` class when an `EntityManagerFactory` is to be created.

Parameters:
  `emName` - the name of the persistence unit
  `map` - a Map of properties for use by the persistence provider. These properties may be used to override the values of the corresponding elements in the `persistence.xml` file or specify values for properties not specified in the `persistence.xml` (and may be null if no properties are specified).
Returns:
  EntityManagerFactory for the persistence unit, or null if the provider is not the right provider

#### createContainerEntityManagerFactory

    EntityManagerFactory createContainerEntityManagerFactory(PersistenceUnitInfo info,
                                                             java.util.Map map)

Called by the container when an `EntityManagerFactory` is to be created.

Parameters:
  `info` - metadata for use by the persistence provider
  `map` - a Map of integration-level properties for use by the persistence provider (may be null if no properties are specified). These properties may include properties to control schema generation. If a Bean Validation provider is present in the classpath, the container must pass the `ValidatorFactory` instance in the map with the key `"javax.persistence.validation.factory"`. If the containing archive is a bean archive, the container must pass the BeanManager instance in the map with the key `"javax.persistence.bean.manager"`.
Returns:
  EntityManagerFactory for the persistence unit specified by the metadata

#### generateSchema

    void generateSchema(PersistenceUnitInfo info,
                        java.util.Map map)

Create database schemas and/or tables and/or create DDL scripts as determined by the supplied properties.

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

Parameters:
  `info` - metadata for use by the persistence provider
  `map` - properties for schema generation; these may also include provider-specific properties
Throws:
  `PersistenceException` - if insufficient or inconsistent configuration information is provided of if schema generation otherwise fails
Since:
  Java Persistence 2.1

#### generateSchema

    boolean generateSchema(java.lang.String persistenceUnitName,
                           java.util.Map map)

Create database schemas and/or tables and/or create DDL scripts as determined by the supplied properties.

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

Parameters:
  `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.
Returns:
  true if schema was generated, otherwise false
Throws:
  `PersistenceException` - if insufficient or inconsistent configuration information is provided or if schema generation otherwise fails
Since:
  Java Persistence 2.1

#### getProviderUtil

    ProviderUtil getProviderUtil()

Return the utility interface implemented by the persistence provider.

Returns:
  ProviderUtil interface
Since:
  Java Persistence 2.0