Module org.eclipse.persistence.jpa
Class EntityManagerFactoryImpl
java.lang.Object
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl
- All Implemented Interfaces:
EntityManagerFactory
,PersistenceUnitUtil
,PersistenceUtil
,AutoCloseable
,JpaEntityManagerFactory
public class EntityManagerFactoryImpl
extends Object
implements EntityManagerFactory, PersistenceUnitUtil, JpaEntityManagerFactory
Wraps our implementation of EntityManagerFactory
Most operations are forwarded to the delegate. This wrapper is used to enable
the refreshMetadata functionality which allows you to switch the underlying metadata for
an EMF after deploy time.
-
Field Summary
-
Constructor Summary
ConstructorDescriptionEntityManagerFactoryImpl
(String persistenceUnitName, Map<String, Object> properties, List<ClassDescriptor> descriptors) Create a dynamic persistence unit which does not use the persistence.xml.EntityManagerFactoryImpl
(EntityManagerSetupImpl setupImpl, Map properties) EntityManagerFactoryImpl
(AbstractSession serverSession) Will return an instance of the Factory. -
Method Summary
Modifier and TypeMethodDescription<T> void
addNamedEntityGraph
(String graphName, EntityGraph<T> entityGraph) void
addNamedQuery
(String name, Query query) void
close()
Closes this factory, releasing any resources that might be held by this factory.PUBLIC: Returns an EntityManager for this deployment.createEntityManager
(SynchronizationType synchronizationType) createEntityManager
(SynchronizationType synchronizationType, Map map) createEntityManager
(Map properties) PUBLIC: Returns an EntityManager for this deployment.protected EntityManagerImpl
createEntityManagerImpl
(Map properties, SynchronizationType syncType) boolean
Return default join existing transaction property, allows reading through write connection.getCache()
Access the cache that is associated with the entity manager factory (the "second level cache").boolean
Return default property to avoid resuming unit of work if going to be closed on commit anyway.Return if updates should be ordered by primary key to avoid possible database deadlocks.boolean
Return default property to avoid discover new objects in unit of work if application always uses persist.Returns the DatabaseSession that the Factory will be using and initializes it if it is not available.Return the default FlashClearCache mode to be used.Return default property, allows flush before query to be avoided.getIdentifier
(Object entity) Returns the id of the entity.static Object
getIdentifier
(Object entity, AbstractSession session) Returns the id of the entity.Return an instance of Metamodel interface for access to the metamodel of the persistence unit.Return interface providing access to utility methods for the persistence unit.boolean
Return default property to avoid discover new objects in unit of work if application always uses persist.getProperty
(String name) The method return user defined property passed in from EntityManagerFactory.Return default property, allows weak unit of work references.INTERNAL: Returns the ServerSession that the Factory will be using and initializes it if it is not available.INTERNAL: Returns the SessionBroker that the Factory will be using and initializes it if it is not available.boolean
Determine the load state of an entity belonging to the persistence unit.boolean
Determine the load state of a given persistent attribute of an entity belonging to the persistence unit.static Boolean
isLoaded
(Object entity, String attributeName, AbstractSession session) Determine the load state of a given persistent attribute of an entity belonging to the persistence unit.static boolean
isLoaded
(Object entity, String attributeName, DatabaseMapping mapping) Check whether a named attribute on a given entity with a given mapping has been loaded.static Boolean
isLoaded
(Object entity, AbstractSession session) Determine the load state of an entity belonging to the persistence unit.boolean
isOpen()
Indicates whether or not this factory is open.void
refreshMetadata
(Map<String, Object> properties) ADVANCED: Re-bootstrap this factory.void
setBeginEarlyTransaction
(boolean beginEarlyTransaction) Set default join existing transaction property, allows reading through write connection.void
setCloseOnCommit
(boolean closeOnCommit) Set default property to avoid resuming unit of work if going to be closed on commit anyway.void
setCommitOrder
(UnitOfWork.CommitOrderType commitOrder) Set updates should be ordered by primary key to avoid possible database deadlocks.void
setCommitWithoutPersistRules
(boolean commitWithoutPersistRules) Set default property to avoid discover new objects in unit of work if application always uses persist.void
setFlushClearCache
(String flushClearCache) Set the default FlashClearCache mode to be used.void
setFlushMode
(FlushModeType flushMode) Set default property, allows flush before query to be avoided.void
setMetamodel
(Metamodel aMetamodel) INTERNAL: Convenience function to allow us to reset the Metamodel in the possible case that we want to regenerate it.void
setPersistOnCommit
(boolean persistOnCommit) Set default property to avoid discover new objects in unit of work if application always uses persist.void
setReferenceMode
(ReferenceMode referenceMode) Set default property, allows weak unit of work references.void
setShouldValidateExistence
(boolean shouldValidateExistence) Set the default to determine if does-exist should be performed on persist.boolean
Return the default to determine if does-exist should be performed on persist.unwrap()
Gets the underlying implementation of the EntityManagerFactory.<T> T
protected void
-
Field Details
-
delegate
-
-
Constructor Details
-
EntityManagerFactoryImpl
Will return an instance of the Factory. Should only be called by EclipseLink. -
EntityManagerFactoryImpl
-
EntityManagerFactoryImpl
public EntityManagerFactoryImpl(String persistenceUnitName, Map<String, Object> properties, List<ClassDescriptor> descriptors) Create a dynamic persistence unit which does not use the persistence.xml. Instead all configuration is driven from the provided persistence unit properties and descriptors.
-
-
Method Details
-
getIdentifier
Returns the id of the entity. A generated id is not guaranteed to be available until after the database insert has occurred. Returns null if the entity does not yet have an id- Returns:
- id of the entity
- Throws:
IllegalArgumentException
- if the entity is found not to be an entity.
-
isLoaded
Determine the load state of an entity belonging to the persistence unit. This method can be used to determine the load state of an entity passed as a reference. An entity is considered loaded if all attributes for which FetchType EAGER has been specified have been loaded. The isLoaded(Object, String) method should be used to determine the load state of an attribute. Not doing so might lead to unintended loading of state.- Parameters:
entity
- whose load state is to be determined- Returns:
- false if the entity has not been loaded, else true.
-
isLoaded
Determine the load state of a given persistent attribute of an entity belonging to the persistence unit.- Parameters:
entity
- containing the attributeattributeName
- name of attribute whose load state is to be determined- Returns:
- false if entity's state has not been loaded or if the attribute state has not been loaded, otherwise true
-
isLoaded
Check whether a named attribute on a given entity with a given mapping has been loaded. This method will check the valueholder or indirect collection for LAZY ForeignReferenceMappings to see if has been instantiated and otherwise check the fetch group. -
refreshMetadata
ADVANCED: Re-bootstrap this factory. This method will rebuild the EntityManagerFactory. It should be used in conjunction with a MetadataSource to allow mappings to be changed in a running system. All existing EntityMangers will continue to function with the old metadata, but new factories will use the new metadata.- Specified by:
refreshMetadata
in interfaceJpaEntityManagerFactory
-
getSessionBroker
INTERNAL: Returns the SessionBroker that the Factory will be using and initializes it if it is not available. This method makes use of the partially constructed session stored in our setupImpl and completes its construction TODO: should throw IllegalStateException if not SessionBroker- Specified by:
getSessionBroker
in interfaceJpaEntityManagerFactory
-
getServerSession
INTERNAL: Returns the ServerSession that the Factory will be using and initializes it if it is not available. This method makes use of the partially constructed session stored in our setupImpl and completes its construction- Specified by:
getServerSession
in interfaceJpaEntityManagerFactory
-
close
public void close()Closes this factory, releasing any resources that might be held by this factory. After invoking this method, all methods on the instance will throw anIllegalStateException
, except forisOpen()
, which will returnfalse
.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceEntityManagerFactory
-
isOpen
public boolean isOpen()Indicates whether or not this factory is open. Returnstrue
until a call toclose()
is made.- Specified by:
isOpen
in interfaceEntityManagerFactory
-
createEntityManager
PUBLIC: Returns an EntityManager for this deployment.- Specified by:
createEntityManager
in interfaceEntityManagerFactory
-
createEntityManager
PUBLIC: Returns an EntityManager for this deployment.- Specified by:
createEntityManager
in interfaceEntityManagerFactory
-
createEntityManager
- Specified by:
createEntityManager
in interfaceEntityManagerFactory
-
createEntityManager
- Specified by:
createEntityManager
in interfaceEntityManagerFactory
-
createEntityManagerImpl
-
unwrap
Gets the underlying implementation of the EntityManagerFactory. This method will return a version of EntityManagerFactory that is based on the available metadata at the time it is called. Future calls to refresh will not affect that metadata on this EntityManagerFactory.- Specified by:
unwrap
in interfaceJpaEntityManagerFactory
-
verifyOpen
protected void verifyOpen() -
getProperty
The method return user defined property passed in from EntityManagerFactory. -
getBeginEarlyTransaction
public boolean getBeginEarlyTransaction()Return default join existing transaction property, allows reading through write connection. -
setBeginEarlyTransaction
public void setBeginEarlyTransaction(boolean beginEarlyTransaction) Set default join existing transaction property, allows reading through write connection. -
getFlushMode
Return default property, allows flush before query to be avoided. -
setFlushMode
Set default property, allows flush before query to be avoided. -
getReferenceMode
Return default property, allows weak unit of work references. -
setReferenceMode
Set default property, allows weak unit of work references. -
getCloseOnCommit
public boolean getCloseOnCommit()Return default property to avoid resuming unit of work if going to be closed on commit anyway. -
setCloseOnCommit
public void setCloseOnCommit(boolean closeOnCommit) Set default property to avoid resuming unit of work if going to be closed on commit anyway. -
getPersistOnCommit
public boolean getPersistOnCommit()Return default property to avoid discover new objects in unit of work if application always uses persist. -
getPersistenceUnitUtil
Return interface providing access to utility methods for the persistence unit.- Specified by:
getPersistenceUnitUtil
in interfaceEntityManagerFactory
- Returns:
- PersistenceUnitUtil interface
- Throws:
IllegalStateException
- if the entity manager factory has been closed.
-
setPersistOnCommit
public void setPersistOnCommit(boolean persistOnCommit) Set default property to avoid discover new objects in unit of work if application always uses persist. -
getCommitWithoutPersistRules
public boolean getCommitWithoutPersistRules()Return default property to avoid discover new objects in unit of work if application always uses persist. -
setCommitWithoutPersistRules
public void setCommitWithoutPersistRules(boolean commitWithoutPersistRules) Set default property to avoid discover new objects in unit of work if application always uses persist. -
getFlushClearCache
Return the default FlashClearCache mode to be used. Relevant only in case call to flush method followed by call to clear method.- See Also:
-
setFlushClearCache
Set the default FlashClearCache mode to be used. Relevant only in case call to flush method followed by call to clear method.- See Also:
-
shouldValidateExistence
public boolean shouldValidateExistence()Return the default to determine if does-exist should be performed on persist. -
setShouldValidateExistence
public void setShouldValidateExistence(boolean shouldValidateExistence) Set the default to determine if does-exist should be performed on persist. -
getCache
Access the cache that is associated with the entity manager factory (the "second level cache").- Specified by:
getCache
in interfaceEntityManagerFactory
- Returns:
- instance of the
Cache
interface - Throws:
IllegalStateException
- if the entity manager factory has been closed- Since:
- Java Persistence 2.0
- See Also:
-
getProperties
- Specified by:
getProperties
in interfaceEntityManagerFactory
- Since:
- Java Persistence API 2.0
- See Also:
-
getDatabaseSession
Description copied from interface:JpaEntityManagerFactory
Returns the DatabaseSession that the Factory will be using and initializes it if it is not available.- Specified by:
getDatabaseSession
in interfaceJpaEntityManagerFactory
-
getCriteriaBuilder
- Specified by:
getCriteriaBuilder
in interfaceEntityManagerFactory
- Since:
- Java Persistence 2.0
- See Also:
-
getMetamodel
Return an instance of Metamodel interface for access to the metamodel of the persistence unit.- Specified by:
getMetamodel
in interfaceEntityManagerFactory
- Returns:
- Metamodel instance
- Throws:
IllegalStateException
- if the entity manager factory has been closed.- Since:
- Java Persistence 2.0
- See Also:
-
setMetamodel
INTERNAL: Convenience function to allow us to reset the Metamodel in the possible case that we want to regenerate it. This function is outside of the JPA 2.0 specification.- Since:
- Java Persistence 2.0
-
isLoaded
Determine the load state of a given persistent attribute of an entity belonging to the persistence unit.- Specified by:
isLoaded
in interfacePersistenceUnitUtil
- Specified by:
isLoaded
in interfacePersistenceUtil
- Parameters:
entity
- containing the attributeattributeName
- name of attribute whose load state is to be determined- Returns:
- false if entity's state has not been loaded or if the attribute state has not been loaded, otherwise true
-
isLoaded
Determine the load state of an entity belonging to the persistence unit. This method can be used to determine the load state of an entity passed as a reference. An entity is considered loaded if all attributes for which FetchType EAGER has been specified have been loaded. The isLoaded(Object, String) method should be used to determine the load state of an attribute. Not doing so might lead to unintended loading of state.- Specified by:
isLoaded
in interfacePersistenceUnitUtil
- Specified by:
isLoaded
in interfacePersistenceUtil
- Parameters:
entity
- whose load state is to be determined- Returns:
- false if the entity has not been loaded, else true.
-
getIdentifier
Returns the id of the entity. A generated id is not guaranteed to be available until after the database insert has occurred. Returns null if the entity does not yet have an id- Specified by:
getIdentifier
in interfacePersistenceUnitUtil
- Returns:
- id of the entity
- Throws:
IllegalStateException
- if the entity is found not to be an entity.
-
getCommitOrder
Return if updates should be ordered by primary key to avoid possible database deadlocks. -
setCommitOrder
Set updates should be ordered by primary key to avoid possible database deadlocks. -
addNamedQuery
- Specified by:
addNamedQuery
in interfaceEntityManagerFactory
-
unwrap
- Specified by:
unwrap
in interfaceEntityManagerFactory
-
addNamedEntityGraph
- Specified by:
addNamedEntityGraph
in interfaceEntityManagerFactory
-