Save This Page
Home » Spring-Framework-090522 » org.springframework » orm » jpa » persistenceunit » [javadoc | source]
org.springframework.orm.jpa.persistenceunit
public class: DefaultPersistenceUnitManager [javadoc | source]
java.lang.Object
   org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager

All Implemented Interfaces:
    LoadTimeWeaverAware, InitializingBean, ResourceLoaderAware, PersistenceUnitManager

Default implementation of the PersistenceUnitManager interface. Used as internal default by org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean .

Supports standard JPA scanning for persistence.xml files, with configurable file locations, JDBC DataSource lookup and load-time weaving.

The default XML file location is classpath*:META-INF/persistence.xml, scanning for all matching files in the class path (as defined in the JPA specification). DataSource names are by default interpreted as JNDI names, and no load time weaving is available (which requires weaving to be turned off in the persistence provider).

Field Summary
public static final  String DEFAULT_PERSISTENCE_XML_LOCATION    Default location of the persistence.xml file: "classpath*:META-INF/persistence.xml". 
public static final  String ORIGINAL_DEFAULT_PERSISTENCE_UNIT_ROOT_LOCATION    Default location for the persistence unit root URL: "classpath:", indicating the root of the class path. 
Method from org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager Summary:
afterPropertiesSet,   getDataSourceLookup,   getDefaultDataSource,   getLoadTimeWeaver,   getPersistenceUnitInfo,   getPersistenceUnitPostProcessors,   obtainDefaultPersistenceUnitInfo,   obtainPersistenceUnitInfo,   postProcessPersistenceUnitInfo,   preparePersistenceUnitInfos,   setDataSourceLookup,   setDataSources,   setDefaultDataSource,   setDefaultPersistenceUnitRootLocation,   setLoadTimeWeaver,   setPersistenceUnitPostProcessors,   setPersistenceXmlLocation,   setPersistenceXmlLocations,   setResourceLoader
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager Detail:
 public  void afterPropertiesSet() 
 public DataSourceLookup getDataSourceLookup() 
    Return the JDBC DataSourceLookup that provides DataSources for the persistence provider, resolving data source names in persistence.xml against Spring-managed DataSource instances.
 public DataSource getDefaultDataSource() 
    Return the JDBC DataSource that the JPA persistence provider is supposed to use for accessing the database if none has been specified in persistence.xml.
 public LoadTimeWeaver getLoadTimeWeaver() 
    Return the Spring LoadTimeWeaver to use for class instrumentation according to the JPA class transformer contract.
 protected final MutablePersistenceUnitInfo getPersistenceUnitInfo(String persistenceUnitName) 
    Return the specified PersistenceUnitInfo from this manager's cache of processed persistence units, keeping it in the cache (i.e. not 'obtaining' it for use but rather just accessing it for post-processing).

    This can be used in #postProcessPersistenceUnitInfo implementations, detecting existing persistence units of the same name and potentially merging them.

 public PersistenceUnitPostProcessor[] getPersistenceUnitPostProcessors() 
    Return the PersistenceUnitPostProcessors to be applied to each PersistenceUnitInfo that has been parsed by this manager.
 public PersistenceUnitInfo obtainDefaultPersistenceUnitInfo() 
 public PersistenceUnitInfo obtainPersistenceUnitInfo(String persistenceUnitName) 
 protected  void postProcessPersistenceUnitInfo(MutablePersistenceUnitInfo pui) 
    Hook method allowing subclasses to customize each PersistenceUnitInfo.

    Default implementation delegates to all registered PersistenceUnitPostProcessors. It is usually preferable to register further entity classes, jar files etc there rather than in a subclass of this manager, to be able to reuse the post-processors.

 public  void preparePersistenceUnitInfos() 
    Prepare the PersistenceUnitInfos according to the configuration of this manager: scanning for persistence.xml files, parsing all matching files, configurating and post-processing them.

    PersistenceUnitInfos cannot be obtained before this preparation method has been invoked.

 public  void setDataSourceLookup(DataSourceLookup dataSourceLookup) 
    Specify the JDBC DataSourceLookup that provides DataSources for the persistence provider, resolving data source names in persistence.xml against Spring-managed DataSource instances.

    Default is JndiDataSourceLookup, which resolves DataSource names as JNDI names (as defined by standard JPA). Specify a BeanFactoryDataSourceLookup instance if you want DataSource names to be resolved against Spring bean names.

    Alternatively, consider passing in a map from names to DataSource instances via the "dataSources" property. If the persistence.xml file does not define DataSource names at all, specify a default DataSource via the "defaultDataSource" property.

 public  void setDataSources(Map<String, DataSource> dataSources) 
    Specify the JDBC DataSources that the JPA persistence provider is supposed to use for accessing the database, resolving data source names in persistence.xml against Spring-managed DataSources.

    The specified Map needs to define data source names for specific DataSource objects, matching the data source names used in persistence.xml. If not specified, data source names will be resolved as JNDI names instead (as defined by standard JPA).

 public  void setDefaultDataSource(DataSource defaultDataSource) 
    Specify the JDBC DataSource that the JPA persistence provider is supposed to use for accessing the database if none has been specified in persistence.xml.

    In JPA speak, a DataSource passed in here will be uses as "nonJtaDataSource" on the PersistenceUnitInfo passed to the PersistenceProvider, provided that none has been registered before.

 public  void setDefaultPersistenceUnitRootLocation(String defaultPersistenceUnitRootLocation) 
    Set the default persistence unit root location, to be applied if no unit-specific persistence unit root could be determined.

    Default is "classpath:", that is, the root of the current class path (nearest root directory). To be overridden if unit-specific resolution does not work and the class path root is not appropriate either.

 public  void setLoadTimeWeaver(LoadTimeWeaver loadTimeWeaver) 
    Specify the Spring LoadTimeWeaver to use for class instrumentation according to the JPA class transformer contract.

    It is not required to specify a LoadTimeWeaver: Most providers will be able to provide a subset of their functionality without class instrumentation as well, or operate with their VM agent specified on JVM startup.

    In terms of Spring-provided weaving options, the most important ones are InstrumentationLoadTimeWeaver, which requires a Spring-specific (but very general) VM agent specified on JVM startup, and ReflectiveLoadTimeWeaver, which interacts with an underlying ClassLoader based on specific extended methods being available on it (for example, interacting with Spring's TomcatInstrumentableClassLoader).

    NOTE: As of Spring 2.5, the context's default LoadTimeWeaver (defined as bean with name "loadTimeWeaver") will be picked up automatically, if available, removing the need for LoadTimeWeaver configuration on each affected target bean. Consider using the context:load-time-weaver XML tag for creating such a shared LoadTimeWeaver (autodetecting the environment by default).

 public  void setPersistenceUnitPostProcessors(PersistenceUnitPostProcessor[] postProcessors) 
    Set the PersistenceUnitPostProcessors to be applied to each PersistenceUnitInfo that has been parsed by this manager.

    Such post-processors can, for example, register further entity classes and jar files, in addition to the metadata read in from persistence.xml.

 public  void setPersistenceXmlLocation(String persistenceXmlLocation) 
    Specify the location of the persistence.xml files to load. These can be specified as Spring resource locations and/or location patterns.

    Default is "classpath*:META-INF/persistence.xml".

 public  void setPersistenceXmlLocations(String[] persistenceXmlLocations) 
    Specify multiple locations of persistence.xml files to load. These can be specified as Spring resource locations and/or location patterns.

    Default is "classpath*:META-INF/persistence.xml".

 public  void setResourceLoader(ResourceLoader resourceLoader)