org.springframework.beans.factory.FactoryBean that creates a JPA
jakarta.persistence.EntityManagerFactory according to JPA's standard
container bootstrap contract. This is the most powerful way to set
up a shared JPA EntityManagerFactory in a Spring application context;
the EntityManagerFactory can then be passed to JPA-based DAOs via
dependency injection. Note that switching to a JNDI lookup or to a
LocalEntityManagerFactoryBean definition is just a matter of
configuration!
As with LocalEntityManagerFactoryBean, configuration settings
are usually read in from a META-INF/persistence.xml config file,
residing in the class path, according to the general JPA configuration contract.
However, this FactoryBean is more flexible in that you can override the location
of the persistence.xml file, specify the JDBC DataSources to link to,
etc. Furthermore, it allows for pluggable class instrumentation through Spring's
org. abstraction,
instead of being tied to a special VM agent specified on JVM startup.
Internally, this FactoryBean parses the persistence.xml file
itself and creates a corresponding jakarta.
object (with further configuration merged in, such as JDBC DataSources and the
Spring LoadTimeWeaver), to be passed to the chosen JPA
jakarta.. This corresponds to a
local JPA container with full support for the standard JPA container contract.
The exposed EntityManagerFactory object will implement all the interfaces of
the underlying native EntityManagerFactory returned by the PersistenceProvider,
plus the EntityManagerFactoryInfo interface which exposes additional
metadata as assembled by this FactoryBean.
setPersistenceXmlLocation, setJpaProperties, setJpaVendorAdapter, setLoadTimeWeaver, setDataSource, EntityManagerFactoryInfo, LocalEntityManagerFactoryBean, org.springframework.orm.jpa.support.SharedEntityManagerBean , jakarta.persistence.spi.PersistenceProvider#createContainerEntityManagerFactory
| Modifier and Type | Field and Description |
|---|---|
| private final DefaultPersistenceUnitManager | |
| private PersistenceUnitInfo | |
| private PersistenceUnitManager |
| Access | Constructor and Description |
|---|---|
| public |
| Modifier and Type | Method and Description |
|---|---|
| public void | afterPropertiesSet()
Overrides org. Implements org. Invoked by the containing This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set. |
| protected EntityManagerFactory | createNativeEntityManagerFactory()
Implements abstract org. Subclasses must implement this method to create the EntityManagerFactory
that will be returned by the |
| protected PersistenceUnitInfo | Returns: the chosen PersistenceUnitInfothe PersistenceUnitManager to obtain from persistenceUnitManager)Determine the PersistenceUnitInfo to use for the EntityManagerFactory created by this bean. |
| public DataSource | getDataSource()
Overrides org. Implements org. Return the JDBC DataSource that this EntityManagerFactory obtains its JDBC Connections from. |
| public PersistenceUnitInfo | getPersistenceUnitInfo()
Overrides org. Implements org. Return the PersistenceUnitInfo used to create this EntityManagerFactory, if the in-container API was used. |
| public String | getPersistenceUnitName()
Overrides org. Implements org. Return the name of the persistence unit used to create this
EntityManagerFactory, or |
| protected void | postProcessEntityManagerFactory(EntityManagerFactory
the newly created EntityManagerFactory we are working with emf, PersistenceUnitInfo the PersistenceUnitInfo used to configure the EntityManagerFactory pui)Hook method allowing subclasses to customize the EntityManagerFactory after its creation via the PersistenceProvider. |
| public void | setDataSource(DataSource dataSource)
Specify the JDBC DataSource that the JPA persistence provider is supposed to use for accessing the database. |
| public void | setJtaDataSource(DataSource jtaDataSource)
Specify the JDBC DataSource that the JPA persistence provider is supposed to use for accessing the database. |
| public void | setLoadTimeWeaver(LoadTimeWeaver
the loadTimeWeaver)LoadTimeWeaver instance (never null)Implements org. Specify the Spring LoadTimeWeaver to use for class instrumentation according to the JPA class transformer contract. |
| public void | setManagedClassNameFilter(ManagedClassNameFilter
a predicate to filter entity classes managedClassNameFilter)Set the |
| public void | setManagedTypes(PersistenceManagedTypes
the managed types managedTypes)Set the |
| public void | setMappingResources(String... mappingResources)
Specify one or more mapping resources (equivalent to |
| public void | setPackagesToScan(String...
one or more base packages to search, analogous to
Spring's component-scan configuration for regular Spring components packagesToScan)Set whether to use Spring-based scanning for entity classes in the classpath
instead of using JPA's standard scanning of jar files with |
| public void | setPersistenceUnitManager(PersistenceUnitManager persistenceUnitManager)
Set the PersistenceUnitManager to use for obtaining the JPA persistence unit that this FactoryBean is supposed to build an EntityManagerFactory for. |
| public void | setPersistenceUnitName(String persistenceUnitName)
Overrides org. Uses the specified persistence unit name as the name of the default persistence unit, if applicable. |
| public void | setPersistenceUnitPostProcessors(PersistenceUnitPostProcessor... postProcessors)
Set the PersistenceUnitPostProcessors to be applied to the PersistenceUnitInfo used for creating this EntityManagerFactory. |
| public void | setPersistenceUnitRootLocation(String defaultPersistenceUnitRootLocation)
Set a persistence unit root location for the default persistence unit. |
| public void | setPersistenceXmlLocation(String
a Spring resource String
identifying the location of the persistenceXmlLocation)persistence.xml file
that this LocalContainerEntityManagerFactoryBean should parseSet the location of the |
| public void | setResourceLoader(ResourceLoader
the ResourceLoader object to be used by this object resourceLoader)Implements org. Set the ResourceLoader that this object runs in. This might be a ResourcePatternResolver, which can be checked
through |
| public void | setSharedCacheMode(SharedCacheMode sharedCacheMode)
Specify the JPA 2.0 shared cache mode for this persistence unit,
overriding a value in |
| public void | setValidationMode(ValidationMode validationMode)
Specify the JPA 2.0 validation mode for this persistence unit,
overriding a value in |
| internalPersistenceUnitManager | back to summary |
|---|---|
| private final DefaultPersistenceUnitManager internalPersistenceUnitManager | |
| persistenceUnitInfo | back to summary |
|---|---|
| private PersistenceUnitInfo persistenceUnitInfo
| |
| persistenceUnitManager | back to summary |
|---|---|
| private PersistenceUnitManager persistenceUnitManager
| |
| LocalContainerEntityManagerFactoryBean | back to summary |
|---|---|
| public LocalContainerEntityManagerFactoryBean() | |
| afterPropertiesSet | back to summary |
|---|---|
| public void afterPropertiesSet() throws PersistenceException Overrides org. Implements org. Doc from org. Invoked by the containing This method allows the bean instance to perform validation of its overall configuration and final initialization when all bean properties have been set.
| |
| createNativeEntityManagerFactory | back to summary |
|---|---|
| protected EntityManagerFactory createNativeEntityManagerFactory() throws PersistenceException Implements abstract org. Doc from org. Subclasses must implement this method to create the EntityManagerFactory
that will be returned by the
| |
| determinePersistenceUnitInfo | back to summary |
|---|---|
| protected PersistenceUnitInfo determinePersistenceUnitInfo(PersistenceUnitManager persistenceUnitManager) Determine the PersistenceUnitInfo to use for the EntityManagerFactory created by this bean. The default implementation reads in all persistence unit infos from
| |
| getDataSource | back to summary |
|---|---|
| public DataSource getDataSource() Overrides org. Implements org. Doc from org. Return the JDBC DataSource that this EntityManagerFactory obtains its JDBC Connections from.
| |
| getPersistenceUnitInfo | back to summary |
|---|---|
| public PersistenceUnitInfo getPersistenceUnitInfo() Overrides org. Implements org. Doc from org. Return the PersistenceUnitInfo used to create this EntityManagerFactory, if the in-container API was used.
| |
| getPersistenceUnitName | back to summary |
|---|---|
| public String getPersistenceUnitName() Overrides org. Implements org. Doc from org. Return the name of the persistence unit used to create this
EntityManagerFactory, or If | |
| postProcessEntityManagerFactory | back to summary |
|---|---|
| protected void postProcessEntityManagerFactory(EntityManagerFactory emf, PersistenceUnitInfo pui) Hook method allowing subclasses to customize the EntityManagerFactory after its creation via the PersistenceProvider. The default implementation is empty.
| |
| setDataSource | back to summary |
|---|---|
| public void setDataSource(DataSource dataSource) Specify the JDBC DataSource that the JPA persistence provider is supposed
to use for accessing the database. This is an alternative to keeping the
JDBC configuration in In JPA speak, a DataSource passed in here will be used as "nonJtaDataSource"
on the PersistenceUnitInfo passed to the PersistenceProvider, as well as
overriding data source configuration in Note Only applied if no external PersistenceUnitManager specified. | |
| setJtaDataSource | back to summary |
|---|---|
| public void setJtaDataSource(DataSource jtaDataSource) Specify the JDBC DataSource that the JPA persistence provider is supposed
to use for accessing the database. This is an alternative to keeping the
JDBC configuration in In JPA speak, a DataSource passed in here will be used as "jtaDataSource"
on the PersistenceUnitInfo passed to the PersistenceProvider, as well as
overriding data source configuration in Note Only applied if no external PersistenceUnitManager specified. | |
| setLoadTimeWeaver | back to summary |
|---|---|
| public void setLoadTimeWeaver(LoadTimeWeaver loadTimeWeaver) Implements org. Specify the Spring LoadTimeWeaver to use for class instrumentation according to the JPA class transformer contract. It is a 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. 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 Note Only applied if no external PersistenceUnitManager specified.
Otherwise, the external
| |
| setManagedClassNameFilter | back to summary |
|---|---|
| public void setManagedClassNameFilter(ManagedClassNameFilter managedClassNameFilter) Set the
| |
| setManagedTypes | back to summary |
|---|---|
| public void setManagedTypes(PersistenceManagedTypes managedTypes) Set the
| |
| setMappingResources | back to summary |
|---|---|
| public void setMappingResources(String... mappingResources) Specify one or more mapping resources (equivalent to Note that mapping resources must be relative to the classpath root,
e.g. "META-INF/mappings.xml" or "com/mycompany/repository/mappings.xml",
so that they can be loaded through If no explicit mapping resources have been specified next to
Note that specifying an empty array/list here suppresses the default
Note Only applied if no external PersistenceUnitManager specified. | |
| setPackagesToScan | back to summary |
|---|---|
| public void setPackagesToScan(String... packagesToScan) Set whether to use Spring-based scanning for entity classes in the classpath
instead of using JPA's standard scanning of jar files with Default is none. Specify packages to search for autodetection of your entity
classes in the classpath. This is analogous to Spring's component-scan feature
( Consider setting a Note There may be limitations in comparison to regular JPA scanning.
In particular, JPA providers may pick up annotated packages for provider-specific
annotations only when driven by If no explicit NOTE: Only applied if no external PersistenceUnitManager specified.
| |
| setPersistenceUnitManager | back to summary |
|---|---|
| public void setPersistenceUnitManager(PersistenceUnitManager persistenceUnitManager) Set the PersistenceUnitManager to use for obtaining the JPA persistence unit that this FactoryBean is supposed to build an EntityManagerFactory for. The default is to rely on the local settings specified on this FactoryBean, such as "persistenceXmlLocation", "dataSource" and "loadTimeWeaver". For reuse of existing persistence unit configuration or more advanced forms
of custom persistence unit handling, consider defining a separate
PersistenceUnitManager bean (typically a DefaultPersistenceUnitManager instance)
and linking it in here. | |
| setPersistenceUnitName | back to summary |
|---|---|
| public void setPersistenceUnitName(String persistenceUnitName) Overrides org. Uses the specified persistence unit name as the name of the default persistence unit, if applicable. Note Only applied if no external PersistenceUnitManager specified.
| |
| setPersistenceUnitPostProcessors | back to summary |
|---|---|
| public void setPersistenceUnitPostProcessors(PersistenceUnitPostProcessor... postProcessors) Set the PersistenceUnitPostProcessors to be applied to the PersistenceUnitInfo used for creating this EntityManagerFactory. Such post-processors can, for example, register further entity
classes and jar files, in addition to the metadata read from
Note Only applied if no external PersistenceUnitManager specified.
| |
| setPersistenceUnitRootLocation | back to summary |
|---|---|
| public void setPersistenceUnitRootLocation(String defaultPersistenceUnitRootLocation) Set a persistence unit root location for the default persistence unit. Default is "classpath:", that is, the root of the current classpath (nearest root directory). To be overridden if unit-specific resolution does not work and the classpath root is not appropriate either. Note Only applied if no external PersistenceUnitManager specified.
| |
| setPersistenceXmlLocation | back to summary |
|---|---|
| public void setPersistenceXmlLocation(String persistenceXmlLocation) Set the location of the Default is "classpath:META-INF/persistence.xml". Note Only applied if no external PersistenceUnitManager specified.
| |
| setResourceLoader | back to summary |
|---|---|
| public void setResourceLoader(ResourceLoader resourceLoader) Implements org. Doc from org. Set the ResourceLoader that this object runs in. This might be a ResourcePatternResolver, which can be checked
through Invoked after population of normal bean properties but before an init callback
like InitializingBean's
| |
| setSharedCacheMode | back to summary |
|---|---|
| public void setSharedCacheMode(SharedCacheMode sharedCacheMode) Specify the JPA 2.0 shared cache mode for this persistence unit,
overriding a value in Note Only applied if no external PersistenceUnitManager specified. | |
| setValidationMode | back to summary |
|---|---|
| public void setValidationMode(ValidationMode validationMode) Specify the JPA 2.0 validation mode for this persistence unit,
overriding a value in Note Only applied if no external PersistenceUnitManager specified. | |