Class AbstractEntityInitializer
- java.lang.Object
-
- org.hibernate.sql.results.graph.AbstractFetchParentAccess
-
- org.hibernate.sql.results.graph.entity.AbstractEntityInitializer
-
- All Implemented Interfaces:
EntityInitializer,FetchParentAccess,Initializer
- Direct Known Subclasses:
EntityJoinedFetchInitializer,EntityResultInitializer
public abstract class AbstractEntityInitializer extends AbstractFetchParentAccess implements EntityInitializer
-
-
Field Summary
Fields Modifier and Type Field Description protected booleanmissing
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractEntityInitializer(EntityResultGraphNode resultDescriptor, NavigablePath navigablePath, LockMode lockMode, Fetch identifierFetch, Fetch discriminatorFetch, DomainResult<Object> rowIdResult, AssemblerCreationState creationState)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected booleanconsistentInstance(Object toInitialize, RowProcessingState rowProcessingState)protected Object[]extractConcreteTypeStateValues(RowProcessingState rowProcessingState)voidfinishUpRow(RowProcessingState rowProcessingState)Lifecycle method called at the end of the current row processing.protected DomainResultAssembler<?>[][]getAssemblers()EntityPersistergetConcreteDescriptor()EntityPersistergetEntityDescriptor()Get the descriptor for the type of entity being initializedprotected ObjectgetEntityFromExecutionContext(RowProcessingState rowProcessingState)ObjectgetEntityInstance()Get the entity instance for the currently processing "row".protected ObjectgetEntityInstanceForNotify()EntityKeygetEntityKey()protected DomainResultAssembler<?>getIdentifierAssembler()ModelPartgetInitializedPart()ObjectgetKeyValue()protected LockModegetLockMode()NavigablePathgetNavigablePath()ObjectgetParentKey()protected Object[]getResolvedEntityState()protected DomainResultAssembler<Object>getRowIdAssembler()protected abstract StringgetSimpleConcreteImplName()Simple class name of this initializer for loggingprotected DomainResultAssembler<?>getVersionAssembler()voidinitializeInstance(RowProcessingState rowProcessingState)Step 3 - Initialize the state of the instance resolved inInitializer.resolveInstance(org.hibernate.sql.results.jdbc.spi.RowProcessingState)from the current row values.protected ObjectinstantiateEntity(Object entityIdentifier, SharedSessionContractImplementor session)booleanisEntityInitialized()protected abstract booleanisEntityReturn()protected booleanisMissing()protected voidpreLoad(RowProcessingState rowProcessingState)protected voidregisterLoadingEntity(RowProcessingState rowProcessingState, Object instance)protected abstract voidregisterLoadingEntityInstanceFromExecutionContext(RowProcessingState rowProcessingState, Object instance)protected voidregisterNaturalIdResolution(PersistenceContext persistenceContext, Object entityIdentifier)protected voidregisterPossibleUniqueKeyEntries(Object toInitialize, SharedSessionContractImplementor session)protected voidregisterReloadedEntity(RowProcessingState rowProcessingState)protected voidregisterReloadedEntity(RowProcessingState rowProcessingState, EntityHolder holder)voidregisterResolutionListener(Consumer<Object> listener)Register a listener to be notified when the parent is "resolved"protected ObjectresolveEntityInstance(Object entityIdentifier, RowProcessingState rowProcessingState)protected voidresolveEntityInstance(RowProcessingState rowProcessingState, EntityHolder holder, Object entityIdentifier)protected voidresolveEntityKey(RowProcessingState rowProcessingState)protected ObjectresolveInstance(Object entityIdentifier, EntityHolder holder, RowProcessingState rowProcessingState)Used by Hibernate ReactivevoidresolveInstance(RowProcessingState rowProcessingState)Step 2 - Using the key resolved inInitializer.resolveKey(org.hibernate.sql.results.jdbc.spi.RowProcessingState), resolve the instance (of the thing initialized) to use for the current row.voidresolveKey(RowProcessingState rowProcessingState)Step 1 - Resolve the key value for this initializer for the current row.protected voidsetEntityInitialized(boolean isInitialized)protected voidsetEntityInstanceForNotify(Object entityInstanceForNotify)protected voidsetMissing(boolean missing)protected voidsetResolvedEntityState(Object[] resolvedEntityState)protected booleanshouldSkipResolveInstance(RowProcessingState rowProcessingState)protected booleanskipInitialization(Object toInitialize, RowProcessingState rowProcessingState)protected voidtakeSnapshot(RowProcessingState rowProcessingState, SharedSessionContractImplementor session, PersistenceContext persistenceContext, EntityEntry entityEntry)protected voidupdateCaches(Object toInitialize, RowProcessingState rowProcessingState, SharedSessionContractImplementor session, PersistenceContext persistenceContext, Object entityIdentifier, Object version)-
Methods inherited from class org.hibernate.sql.results.graph.AbstractFetchParentAccess
clearResolutionListeners, notifyResolutionListeners
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.sql.results.graph.entity.EntityInitializer
asEntityInitializer, findFirstEntityDescriptorAccess, findFirstEntityInitializer, getInitializedInstance, isEntityInitializer
-
Methods inherited from interface org.hibernate.sql.results.graph.FetchParentAccess
getFetchParentAccess
-
Methods inherited from interface org.hibernate.sql.results.graph.Initializer
asEmbeddableInitializer, endLoading, isAttributeAssignableToConcreteDescriptor, isCollectionInitializer, isEmbeddableInitializer
-
-
-
-
Constructor Detail
-
AbstractEntityInitializer
protected AbstractEntityInitializer(EntityResultGraphNode resultDescriptor, NavigablePath navigablePath, LockMode lockMode, Fetch identifierFetch, Fetch discriminatorFetch, DomainResult<Object> rowIdResult, AssemblerCreationState creationState)
-
-
Method Detail
-
getInitializedPart
public ModelPart getInitializedPart()
- Specified by:
getInitializedPartin interfaceInitializer
-
getSimpleConcreteImplName
protected abstract String getSimpleConcreteImplName()
Simple class name of this initializer for logging
-
getNavigablePath
public NavigablePath getNavigablePath()
- Specified by:
getNavigablePathin interfaceFetchParentAccess- Specified by:
getNavigablePathin interfaceInitializer
-
getIdentifierAssembler
protected DomainResultAssembler<?> getIdentifierAssembler()
-
isMissing
protected boolean isMissing()
-
setMissing
protected void setMissing(boolean missing)
-
isEntityReturn
protected abstract boolean isEntityReturn()
-
getEntityDescriptor
public EntityPersister getEntityDescriptor()
Description copied from interface:EntityInitializerGet the descriptor for the type of entity being initialized- Specified by:
getEntityDescriptorin interfaceEntityInitializer
-
getEntityInstance
public Object getEntityInstance()
Description copied from interface:EntityInitializerGet the entity instance for the currently processing "row".- Specified by:
getEntityInstancein interfaceEntityInitializer
-
getKeyValue
public Object getKeyValue()
-
getEntityKey
public EntityKey getEntityKey()
- Specified by:
getEntityKeyin interfaceEntityInitializer
-
getParentKey
public Object getParentKey()
- Specified by:
getParentKeyin interfaceFetchParentAccess
-
registerResolutionListener
public void registerResolutionListener(Consumer<Object> listener)
Description copied from interface:FetchParentAccessRegister a listener to be notified when the parent is "resolved"- Specified by:
registerResolutionListenerin interfaceFetchParentAccess- Overrides:
registerResolutionListenerin classAbstractFetchParentAccess
-
resolveKey
public void resolveKey(RowProcessingState rowProcessingState)
Description copied from interface:InitializerStep 1 - Resolve the key value for this initializer for the current row. After this point, the initializer knows the entity/collection/component key for the current row- Specified by:
resolveKeyin interfaceInitializer
-
resolveEntityKey
protected void resolveEntityKey(RowProcessingState rowProcessingState)
-
resolveInstance
public void resolveInstance(RowProcessingState rowProcessingState)
Description copied from interface:InitializerStep 2 - Using the key resolved inInitializer.resolveKey(org.hibernate.sql.results.jdbc.spi.RowProcessingState), resolve the instance (of the thing initialized) to use for the current row. After this point, the initializer knows the entity/collection/component instance for the current row based on the resolved key todo (6.0) : much of the various implementations of this are similar enough to handle in a common base implementation (templating?) things like resolving as managed (Session cache), from second-level cache, from LoadContext, etc..- Specified by:
resolveInstancein interfaceInitializer
-
shouldSkipResolveInstance
protected boolean shouldSkipResolveInstance(RowProcessingState rowProcessingState)
-
resolveEntityInstance
protected void resolveEntityInstance(RowProcessingState rowProcessingState, EntityHolder holder, Object entityIdentifier)
-
registerLoadingEntityInstanceFromExecutionContext
protected abstract void registerLoadingEntityInstanceFromExecutionContext(RowProcessingState rowProcessingState, Object instance)
-
getEntityFromExecutionContext
protected Object getEntityFromExecutionContext(RowProcessingState rowProcessingState)
-
resolveInstance
protected Object resolveInstance(Object entityIdentifier, EntityHolder holder, RowProcessingState rowProcessingState)
Used by Hibernate Reactive
-
resolveEntityInstance
protected Object resolveEntityInstance(Object entityIdentifier, RowProcessingState rowProcessingState)
-
instantiateEntity
protected Object instantiateEntity(Object entityIdentifier, SharedSessionContractImplementor session)
-
registerLoadingEntity
protected void registerLoadingEntity(RowProcessingState rowProcessingState, Object instance)
-
registerReloadedEntity
protected void registerReloadedEntity(RowProcessingState rowProcessingState)
-
registerReloadedEntity
protected void registerReloadedEntity(RowProcessingState rowProcessingState, EntityHolder holder)
-
initializeInstance
public void initializeInstance(RowProcessingState rowProcessingState)
Description copied from interface:InitializerStep 3 - Initialize the state of the instance resolved inInitializer.resolveInstance(org.hibernate.sql.results.jdbc.spi.RowProcessingState)from the current row values. All resolved state for the current row is injected into the resolved instance- Specified by:
initializeInstancein interfaceInitializer
-
consistentInstance
protected boolean consistentInstance(Object toInitialize, RowProcessingState rowProcessingState)
-
updateCaches
protected void updateCaches(Object toInitialize, RowProcessingState rowProcessingState, SharedSessionContractImplementor session, PersistenceContext persistenceContext, Object entityIdentifier, Object version)
-
registerNaturalIdResolution
protected void registerNaturalIdResolution(PersistenceContext persistenceContext, Object entityIdentifier)
-
takeSnapshot
protected void takeSnapshot(RowProcessingState rowProcessingState, SharedSessionContractImplementor session, PersistenceContext persistenceContext, EntityEntry entityEntry)
-
registerPossibleUniqueKeyEntries
protected void registerPossibleUniqueKeyEntries(Object toInitialize, SharedSessionContractImplementor session)
-
extractConcreteTypeStateValues
protected Object[] extractConcreteTypeStateValues(RowProcessingState rowProcessingState)
-
skipInitialization
protected boolean skipInitialization(Object toInitialize, RowProcessingState rowProcessingState)
-
preLoad
protected void preLoad(RowProcessingState rowProcessingState)
-
isEntityInitialized
public boolean isEntityInitialized()
- Specified by:
isEntityInitializedin interfaceEntityInitializer- Returns:
- true if the current entity associated to this EntityInitializer has been initialized
-
setEntityInitialized
protected void setEntityInitialized(boolean isInitialized)
-
setEntityInstanceForNotify
protected void setEntityInstanceForNotify(Object entityInstanceForNotify)
-
getEntityInstanceForNotify
protected Object getEntityInstanceForNotify()
-
setResolvedEntityState
protected void setResolvedEntityState(Object[] resolvedEntityState)
-
getResolvedEntityState
protected Object[] getResolvedEntityState()
-
getConcreteDescriptor
public EntityPersister getConcreteDescriptor()
- Specified by:
getConcreteDescriptorin interfaceEntityInitializer
-
getVersionAssembler
protected DomainResultAssembler<?> getVersionAssembler()
-
getRowIdAssembler
protected DomainResultAssembler<Object> getRowIdAssembler()
-
getLockMode
protected LockMode getLockMode()
-
getAssemblers
protected DomainResultAssembler<?>[][] getAssemblers()
-
finishUpRow
public void finishUpRow(RowProcessingState rowProcessingState)
Description copied from interface:InitializerLifecycle method called at the end of the current row processing. Provides ability to complete processing from the current row and prepare for the next row.- Specified by:
finishUpRowin interfaceInitializer
-
-