Class AbstractBatchEntitySelectFetchInitializer
- java.lang.Object
-
- org.hibernate.sql.results.graph.entity.internal.AbstractBatchEntitySelectFetchInitializer
-
- All Implemented Interfaces:
EntityInitializer,FetchParentAccess,Initializer
- Direct Known Subclasses:
BatchEntityInsideEmbeddableSelectFetchInitializer,BatchEntitySelectFetchInitializer,BatchInitializeEntitySelectFetchInitializer
public abstract class AbstractBatchEntitySelectFetchInitializer extends Object implements EntityInitializer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAbstractBatchEntitySelectFetchInitializer.State
-
Field Summary
Fields Modifier and Type Field Description protected EntityPersisterconcreteDescriptorprotected EntityKeyentityKeyprotected EntityInitializerfirstEntityInitializerprotected DomainResultAssembler<?>identifierAssemblerprotected ObjectinitializedEntityInstanceprotected FetchParentAccessparentAccessprotected booleanparentShallowCachedprotected ToOneAttributeMappingreferencedModelPartprotected AbstractBatchEntitySelectFetchInitializer.Statestate
-
Constructor Summary
Constructors Constructor Description AbstractBatchEntitySelectFetchInitializer(FetchParentAccess parentAccess, ToOneAttributeMapping referencedModelPart, NavigablePath fetchedNavigable, EntityPersister concreteDescriptor, DomainResultAssembler<?> identifierAssembler)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidendLoading(ExecutionContext executionContext)Lifecycle method called at the very end of the result values processingvoidfinishUpRow(RowProcessingState rowProcessingState)Lifecycle method called at the end of the current row processing.EntityPersistergetConcreteDescriptor()EntityPersistergetEntityDescriptor()Get the descriptor for the type of entity being initializedObjectgetEntityInstance()Get the entity instance for the currently processing "row".EntityKeygetEntityKey()protected ObjectgetExistingInitializedInstance(RowProcessingState rowProcessingState)FetchParentAccessgetFetchParentAccess()ModelPartgetInitializedPart()NavigablePathgetNavigablePath()@Nullable EntityMappingTypegetOwnedModelPartDeclaringType()@Nullable FetchParentAccessgetOwningParent()protected AttributeMappinggetParentEntityAttribute(String attributeName)ObjectgetParentKey()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.voidinitializeInstanceFromParent(Object parentInstance, RowProcessingState rowProcessingState)Step 3.1 - Initialize the state of the instance as extracted from the given parentInstance.booleanisPartOfKey()booleanisResultInitializer()protected static ObjectloadInstance(EntityKey entityKey, ToOneAttributeMapping referencedModelPart, SharedSessionContractImplementor session)voidmarkShallowCached()protected abstract voidregisterResolutionListener()voidregisterResolutionListener(Consumer<Object> listener)Register a listener to be notified when the parent is "resolved"protected voidregisterToBatchFetchQueue(RowProcessingState rowProcessingState)voidresolveKey(RowProcessingState rowProcessingState)Step 1 - Resolve the key value for this initializer for the current row.-
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, isEntityInitialized, isEntityInitializer
-
Methods inherited from interface org.hibernate.sql.results.graph.FetchParentAccess
shouldSkipInitializer
-
Methods inherited from interface org.hibernate.sql.results.graph.Initializer
asCollectionInitializer, asEmbeddableInitializer, isCollectionInitializer, isEmbeddableInitializer, resolveInstance, startLoading
-
-
-
-
Field Detail
-
parentAccess
protected final FetchParentAccess parentAccess
-
concreteDescriptor
protected final EntityPersister concreteDescriptor
-
identifierAssembler
protected final DomainResultAssembler<?> identifierAssembler
-
referencedModelPart
protected final ToOneAttributeMapping referencedModelPart
-
firstEntityInitializer
protected final EntityInitializer firstEntityInitializer
-
parentShallowCached
protected boolean parentShallowCached
-
initializedEntityInstance
protected Object initializedEntityInstance
-
entityKey
protected EntityKey entityKey
-
state
protected AbstractBatchEntitySelectFetchInitializer.State state
-
-
Constructor Detail
-
AbstractBatchEntitySelectFetchInitializer
public AbstractBatchEntitySelectFetchInitializer(FetchParentAccess parentAccess, ToOneAttributeMapping referencedModelPart, NavigablePath fetchedNavigable, EntityPersister concreteDescriptor, DomainResultAssembler<?> identifierAssembler)
-
-
Method Detail
-
getInitializedPart
public ModelPart getInitializedPart()
- Specified by:
getInitializedPartin interfaceInitializer
-
getNavigablePath
public NavigablePath getNavigablePath()
- Specified by:
getNavigablePathin interfaceFetchParentAccess- Specified by:
getNavigablePathin interfaceInitializer
-
isPartOfKey
public boolean isPartOfKey()
- Specified by:
isPartOfKeyin interfaceInitializer
-
isResultInitializer
public boolean isResultInitializer()
- Specified by:
isResultInitializerin interfaceInitializer
-
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
-
registerResolutionListener
protected abstract void registerResolutionListener()
-
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
-
getExistingInitializedInstance
protected Object getExistingInitializedInstance(RowProcessingState rowProcessingState)
-
registerToBatchFetchQueue
protected void registerToBatchFetchQueue(RowProcessingState rowProcessingState)
-
initializeInstanceFromParent
public void initializeInstanceFromParent(Object parentInstance, RowProcessingState rowProcessingState)
Description copied from interface:InitializerStep 3.1 - Initialize the state of the instance as extracted from the given parentInstance. Extraction can be done with theInitializer.getInitializedPart(). Initializers are supposed to recursively call this method for sub-initializers. This alternative initialization protocol is used for shallow query cache hits, in which case there is no data available in theJdbcValuesCacheHitto initialize potentially lazy associations.- Specified by:
initializeInstanceFromParentin interfaceInitializer
-
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
-
markShallowCached
public void markShallowCached()
- Specified by:
markShallowCachedin interfaceInitializer
-
endLoading
public void endLoading(ExecutionContext executionContext)
Description copied from interface:InitializerLifecycle method called at the very end of the result values processing- Specified by:
endLoadingin interfaceInitializer
-
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
-
loadInstance
protected static Object loadInstance(EntityKey entityKey, ToOneAttributeMapping referencedModelPart, SharedSessionContractImplementor session)
-
getParentEntityAttribute
protected AttributeMapping getParentEntityAttribute(String attributeName)
-
getFetchParentAccess
public FetchParentAccess getFetchParentAccess()
- Specified by:
getFetchParentAccessin interfaceFetchParentAccess
-
getOwningParent
public @Nullable FetchParentAccess getOwningParent()
- Specified by:
getOwningParentin interfaceFetchParentAccess
-
getOwnedModelPartDeclaringType
public @Nullable EntityMappingType getOwnedModelPartDeclaringType()
- Specified by:
getOwnedModelPartDeclaringTypein interfaceFetchParentAccess
-
getConcreteDescriptor
public EntityPersister getConcreteDescriptor()
- Specified by:
getConcreteDescriptorin interfaceEntityInitializer
-
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
-
-