Module org.eclipse.persistence.jpa
Class EntityManagerFactoryDelegate
- java.lang.Object
-
- org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate
-
- All Implemented Interfaces:
jakarta.persistence.EntityManagerFactory,jakarta.persistence.PersistenceUnitUtil,jakarta.persistence.PersistenceUtil,AutoCloseable,JpaEntityManagerFactory
public class EntityManagerFactoryDelegate extends Object implements jakarta.persistence.EntityManagerFactory, jakarta.persistence.PersistenceUnitUtil, JpaEntityManagerFactory
Purpose: Provides the implementation for the EntityManager Factory.
Description: This class will store a reference to the active ServerSession. When a request is made for an EntityManager an new EntityManager is created with the ServerSession and returned. The primary consumer of these EntityManager is assumed to be either the Container. There is one EntityManagerFactory per deployment.
- Since:
- TopLink Essentials - JPA 1.0
- Author:
- gyorke
- See Also:
EntityManager,JpaEntityManager,JpaEntityManagerFactory
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanbeginEarlyTransactionDefault join existing transaction property, allows reading through write connection.protected booleancloseOnCommitDefault property to avoid resuming unit of work if going to be closed on commit anyway.protected UnitOfWork.CommitOrderTypecommitOrderOrder updates by id to avoid potential deadlocks.protected booleancommitWithoutPersistRulesprotected StringflushClearCacheDefault FlashClearCache mode to be used.protected jakarta.persistence.FlushModeTypeflushModeDefault property, allows flush before query to be avoided.protected booleanisOpenStores if closed has been called.protected jakarta.persistence.CachemyCacheReference to Cache Interface.protected JpaEntityManagerFactoryownerPointer to the EntityManagerFactoryImpl that created meprotected booleanpersistOnCommitDefault property to avoid discover new objects in unit of work if application always uses persist.protected MappropertiesPersistence unit properties from create factory.protected ReferenceModereferenceModeDefault property, allows weak unit of work references.protected AbstractSessionsessionReference to the ServerSession for this deployment.protected EntityManagerSetupImplsetupImplEntityManagerSetupImpl that deployed this factory.protected booleanshouldValidateExistenceDefault to determine if does-exist should be performed on persist.protected static Set<String>supportedNonServerSessionPropertiesINTERNAL: The following properties passed to createEMF cached and processed on the emf directly.
-
Constructor Summary
Constructors Constructor Description EntityManagerFactoryDelegate(String persistenceUnitName, Map<String,Object> properties, List<ClassDescriptor> descriptors, JpaEntityManagerFactory owner)Create a dynamic persistence unit which does not use the persistence.xml.EntityManagerFactoryDelegate(EntityManagerSetupImpl setupImpl, Map properties, JpaEntityManagerFactory owner)EntityManagerFactoryDelegate(AbstractSession databaseSession, JpaEntityManagerFactory owner)Will return an instance of the Factory.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T> voidaddNamedEntityGraph(String graphName, jakarta.persistence.EntityGraph<T> entityGraph)voidaddNamedQuery(String name, jakarta.persistence.Query query)voidclose()Closes this factory, releasing any resources that might be held by this factory.jakarta.persistence.EntityManagercreateEntityManager()PUBLIC: Returns an EntityManager for this deployment.jakarta.persistence.EntityManagercreateEntityManager(jakarta.persistence.SynchronizationType synchronizationType)jakarta.persistence.EntityManagercreateEntityManager(jakarta.persistence.SynchronizationType synchronizationType, Map map)jakarta.persistence.EntityManagercreateEntityManager(Map properties)PUBLIC: Returns an EntityManager for this deployment.protected EntityManagerImplcreateEntityManagerImpl(Map properties, jakarta.persistence.SynchronizationType syncType)protected voidfinalize()AbstractSessiongetAbstractSession()INTERNAL: Returns the ServerSession that the Factory will be using and initializes it if it is not available.booleangetBeginEarlyTransaction()Return default join existing transaction property, allows reading through write connection.jakarta.persistence.CachegetCache()Access the cache that is associated with the entity manager factory (the "second level cache").booleangetCloseOnCommit()Return default property to avoid resuming unit of work if going to be closed on commit anyway.UnitOfWork.CommitOrderTypegetCommitOrder()Return if updates should be ordered by primary key, to avoid potential database deadlocks.booleangetCommitWithoutPersistRules()Return default property to avoid discover new objects in unit of work if application always uses persist.jakarta.persistence.criteria.CriteriaBuildergetCriteriaBuilder()DatabaseSessionImplgetDatabaseSession()INTERNAL: Returns the ServerSession that the Factory will be using and initializes it if it is not available.StringgetFlushClearCache()Return the default FlashClearCache mode to be used.jakarta.persistence.FlushModeTypegetFlushMode()Return default property, allows flush before query to be avoided.ObjectgetIdentifier(Object entity)Returns the id of the entity.jakarta.persistence.metamodel.MetamodelgetMetamodel()Return an instance of Metamodel interface for access to the metamodel of the persistence unit.JpaEntityManagerFactorygetOwner()INTERNAL: Get the EntityManagerFactoryImpl that created thisjakarta.persistence.PersistenceUnitUtilgetPersistenceUnitUtil()Return interface providing access to utility methods for the persistence unit.booleangetPersistOnCommit()Return default property to avoid discover new objects in unit of work if application always uses persist.Map<String,Object>getProperties()ObjectgetProperty(String name)The method return user defined property passed in from EntityManagerFactory.ReferenceModegetReferenceMode()Return default property, allows weak unit of work references.ServerSessiongetServerSession()INTERNAL: Returns the ServerSession that the Factory will be using and initializes it if it is not available.SessionBrokergetSessionBroker()INTERNAL: Returns the SessionBroker that the Factory will be using and initializes it if it is not available.EntityManagerSetupImplgetSetupImpl()INTERNAL: Return the EntityManagerSetupImpl associated with this factorybooleanisLoaded(Object entity)Determine the load state of an entity belonging to the persistence unit.booleanisLoaded(Object entity, String attributeName)Determine the load state of a given persistent attribute of an entity belonging to the persistence unit.booleanisOpen()Indicates whether or not this factory is open.protected voidprocessProperties(Map properties)Process all EntityManager properties.voidrefreshMetadata(Map properties)ADVANCED: Re-bootstrap this factory.voidsetBeginEarlyTransaction(boolean beginEarlyTransaction)Set default join existing transaction property, allows reading through write connection.voidsetCloseOnCommit(boolean closeOnCommit)Set default property to avoid resuming unit of work if going to be closed on commit anyway.voidsetCommitOrder(UnitOfWork.CommitOrderType commitOrder)Set update ordering by primary key, to avoid potential database deadlocks.voidsetCommitWithoutPersistRules(boolean commitWithoutPersistRules)Set default property to avoid discover new objects in unit of work if application always uses persist.voidsetFlushClearCache(String flushClearCache)Set the default FlashClearCache mode to be used.voidsetFlushMode(jakarta.persistence.FlushModeType flushMode)Set default property, allows flush before query to be avoided.voidsetMetamodel(jakarta.persistence.metamodel.Metamodel aMetamodel)INTERNAL: Convenience function to allow us to reset the Metamodel in the possible case that we want to regenerate it.voidsetPersistOnCommit(boolean persistOnCommit)Set default property to avoid discover new objects in unit of work if application always uses persist.voidsetReferenceMode(ReferenceMode referenceMode)Set default property, allows weak unit of work references.voidsetShouldValidateExistence(boolean shouldValidateExistence)Set the default to determine if does-exist should be performed on persist.booleanshouldValidateExistence()Return the default to determine if does-exist should be performed on persist.EntityManagerFactoryDelegateunwrap()Gets the underlying implementation of the EntityManagerFactory.<T> Tunwrap(Class<T> cls)protected voidverifyOpen()
-
-
-
Field Detail
-
myCache
protected jakarta.persistence.Cache myCache
Reference to Cache Interface.
-
session
protected volatile AbstractSession session
Reference to the ServerSession for this deployment.
-
setupImpl
protected EntityManagerSetupImpl setupImpl
EntityManagerSetupImpl that deployed this factory.
-
isOpen
protected boolean isOpen
Stores if closed has been called.
-
properties
protected Map properties
Persistence unit properties from create factory.
-
supportedNonServerSessionProperties
protected static final Set<String> supportedNonServerSessionProperties
INTERNAL: The following properties passed to createEMF cached and processed on the emf directly. None of these properties processed during predeploy or deploy.
-
beginEarlyTransaction
protected boolean beginEarlyTransaction
Default join existing transaction property, allows reading through write connection.
-
flushMode
protected jakarta.persistence.FlushModeType flushMode
Default property, allows flush before query to be avoided.
-
referenceMode
protected ReferenceMode referenceMode
Default property, allows weak unit of work references.
-
closeOnCommit
protected boolean closeOnCommit
Default property to avoid resuming unit of work if going to be closed on commit anyway.
-
persistOnCommit
protected boolean persistOnCommit
Default property to avoid discover new objects in unit of work if application always uses persist.
-
flushClearCache
protected String flushClearCache
Default FlashClearCache mode to be used. Relevant only in case call to flush method followed by call to clear method.- See Also:
FlushClearCache
-
shouldValidateExistence
protected boolean shouldValidateExistence
Default to determine if does-exist should be performed on persist.
-
commitOrder
protected UnitOfWork.CommitOrderType commitOrder
Order updates by id to avoid potential deadlocks. Default is true.
-
commitWithoutPersistRules
protected boolean commitWithoutPersistRules
-
owner
protected JpaEntityManagerFactory owner
Pointer to the EntityManagerFactoryImpl that created me
-
-
Constructor Detail
-
EntityManagerFactoryDelegate
public EntityManagerFactoryDelegate(AbstractSession databaseSession, JpaEntityManagerFactory owner)
Will return an instance of the Factory. Should only be called by EclipseLink.
-
EntityManagerFactoryDelegate
public EntityManagerFactoryDelegate(EntityManagerSetupImpl setupImpl, Map properties, JpaEntityManagerFactory owner)
-
EntityManagerFactoryDelegate
public EntityManagerFactoryDelegate(String persistenceUnitName, Map<String,Object> properties, List<ClassDescriptor> descriptors, JpaEntityManagerFactory owner)
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 Detail
-
getDatabaseSession
public DatabaseSessionImpl getDatabaseSession()
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:
getDatabaseSessionin interfaceJpaEntityManagerFactory
-
getAbstractSession
public AbstractSession getAbstractSession()
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
-
getSetupImpl
public EntityManagerSetupImpl getSetupImpl()
INTERNAL: Return the EntityManagerSetupImpl associated with this factory
-
getServerSession
public ServerSession 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 TODO: should throw IllegalStateException if not ServerSession- Specified by:
getServerSessionin interfaceJpaEntityManagerFactory
-
getSessionBroker
public SessionBroker 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:
getSessionBrokerin 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:
closein interfaceAutoCloseable- Specified by:
closein interfacejakarta.persistence.EntityManagerFactory
-
isOpen
public boolean isOpen()
Indicates whether or not this factory is open. Returnstrueuntil a call toclose()is made.- Specified by:
isOpenin interfacejakarta.persistence.EntityManagerFactory
-
createEntityManager
public jakarta.persistence.EntityManager createEntityManager()
PUBLIC: Returns an EntityManager for this deployment.- Specified by:
createEntityManagerin interfacejakarta.persistence.EntityManagerFactory
-
createEntityManager
public jakarta.persistence.EntityManager createEntityManager(Map properties)
PUBLIC: Returns an EntityManager for this deployment.- Specified by:
createEntityManagerin interfacejakarta.persistence.EntityManagerFactory
-
createEntityManager
public jakarta.persistence.EntityManager createEntityManager(jakarta.persistence.SynchronizationType synchronizationType, Map map)- Specified by:
createEntityManagerin interfacejakarta.persistence.EntityManagerFactory
-
createEntityManager
public jakarta.persistence.EntityManager createEntityManager(jakarta.persistence.SynchronizationType synchronizationType)
- Specified by:
createEntityManagerin interfacejakarta.persistence.EntityManagerFactory
-
createEntityManagerImpl
protected EntityManagerImpl createEntityManagerImpl(Map properties, jakarta.persistence.SynchronizationType syncType)
-
unwrap
public EntityManagerFactoryDelegate 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:
unwrapin interfaceJpaEntityManagerFactory
-
verifyOpen
protected void verifyOpen()
-
finalize
protected void finalize() throws Throwable
-
getProperty
public Object getProperty(String name)
The method return user defined property passed in from EntityManagerFactory.
-
processProperties
protected void processProperties(Map properties)
Process all EntityManager properties. This allows all EntityManager properties specified in the persistence.xml, factory properties, or System properties to be preprocessed. This save the cost of processing these properties each time an EntityManager is created, which can add considerable overhead to both performance and concurrency as System properties are a Hashtable and synchronized. ATTENTION: If you add a new property to be processed in this method please also add the property's name to PersistenceUnitProperties.supportedNonServerSessionProperties
-
refreshMetadata
public void refreshMetadata(Map properties)
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. This call will throw an exception when called on EntityManagerFactoryImplDelegate- Specified by:
refreshMetadatain interfaceJpaEntityManagerFactory
-
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
public jakarta.persistence.FlushModeType getFlushMode()
Return default property, allows flush before query to be avoided.
-
setFlushMode
public void setFlushMode(jakarta.persistence.FlushModeType flushMode)
Set default property, allows flush before query to be avoided.
-
getReferenceMode
public ReferenceMode getReferenceMode()
Return default property, allows weak unit of work references.
-
setReferenceMode
public void setReferenceMode(ReferenceMode referenceMode)
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
public jakarta.persistence.PersistenceUnitUtil getPersistenceUnitUtil()
Return interface providing access to utility methods for the persistence unit.- Specified by:
getPersistenceUnitUtilin interfacejakarta.persistence.EntityManagerFactory- 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
public String 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:
FlushClearCache
-
setFlushClearCache
public void setFlushClearCache(String flushClearCache)
Set the default FlashClearCache mode to be used. Relevant only in case call to flush method followed by call to clear method.- See Also:
FlushClearCache
-
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
public jakarta.persistence.Cache getCache()
Access the cache that is associated with the entity manager factory (the "second level cache").- Specified by:
getCachein interfacejakarta.persistence.EntityManagerFactory- Returns:
- instance of the
Cacheinterface - Throws:
IllegalStateException- if the entity manager factory has been closed- Since:
- Java Persistence 2.0
- See Also:
EntityManagerFactory.getCache()
-
getProperties
public Map<String,Object> getProperties()
- Specified by:
getPropertiesin interfacejakarta.persistence.EntityManagerFactory- Since:
- Java Persistence API 2.0
- See Also:
EntityManagerFactory.getProperties()
-
getCriteriaBuilder
public jakarta.persistence.criteria.CriteriaBuilder getCriteriaBuilder()
- Specified by:
getCriteriaBuilderin interfacejakarta.persistence.EntityManagerFactory- Since:
- Java Persistence 2.0
- See Also:
EntityManagerFactory.getCriteriaBuilder()
-
getMetamodel
public jakarta.persistence.metamodel.Metamodel getMetamodel()
Return an instance of Metamodel interface for access to the metamodel of the persistence unit.- Specified by:
getMetamodelin interfacejakarta.persistence.EntityManagerFactory- Returns:
- Metamodel instance
- Throws:
IllegalStateException- if the entity manager factory has been closed.- Since:
- Java Persistence 2.0
- See Also:
EntityManagerFactory.getMetamodel()
-
getOwner
public JpaEntityManagerFactory getOwner()
INTERNAL: Get the EntityManagerFactoryImpl that created this
-
setMetamodel
public void setMetamodel(jakarta.persistence.metamodel.Metamodel aMetamodel)
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
public boolean isLoaded(Object entity, String attributeName)
Determine the load state of a given persistent attribute of an entity belonging to the persistence unit.- Specified by:
isLoadedin interfacejakarta.persistence.PersistenceUnitUtil- Specified by:
isLoadedin interfacejakarta.persistence.PersistenceUtil- 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
public boolean isLoaded(Object entity)
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:
isLoadedin interfacejakarta.persistence.PersistenceUnitUtil- Specified by:
isLoadedin interfacejakarta.persistence.PersistenceUtil- Parameters:
entity- whose load state is to be determined- Returns:
- false if the entity has not been loaded, else true.
-
getIdentifier
public Object getIdentifier(Object entity)
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:
getIdentifierin interfacejakarta.persistence.PersistenceUnitUtil- Returns:
- id of the entity
- Throws:
IllegalArgumentException- if the entity is found not to be an entity.
-
getCommitOrder
public UnitOfWork.CommitOrderType getCommitOrder()
Return if updates should be ordered by primary key, to avoid potential database deadlocks.
-
setCommitOrder
public void setCommitOrder(UnitOfWork.CommitOrderType commitOrder)
Set update ordering by primary key, to avoid potential database deadlocks.
-
addNamedQuery
public void addNamedQuery(String name, jakarta.persistence.Query query)
- Specified by:
addNamedQueryin interfacejakarta.persistence.EntityManagerFactory
-
unwrap
public <T> T unwrap(Class<T> cls)
- Specified by:
unwrapin interfacejakarta.persistence.EntityManagerFactory
-
addNamedEntityGraph
public <T> void addNamedEntityGraph(String graphName, jakarta.persistence.EntityGraph<T> entityGraph)
- Specified by:
addNamedEntityGraphin interfacejakarta.persistence.EntityManagerFactory
-
-