Skip to content

some minor refactorings to Initializers #10317

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,9 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.engine.spi.EntityEntry;
import org.hibernate.engine.spi.EntityKey;
import org.hibernate.engine.spi.PersistenceContext;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.internal.log.LoggingHelper;
import org.hibernate.metamodel.mapping.AttributeMapping;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping;
Expand All @@ -31,7 +26,10 @@
import org.hibernate.sql.results.jdbc.spi.RowProcessingState;
import org.hibernate.type.Type;

public class BatchEntityInsideEmbeddableSelectFetchInitializer extends AbstractBatchEntitySelectFetchInitializer<BatchEntityInsideEmbeddableSelectFetchInitializer.BatchEntityInsideEmbeddableSelectFetchInitializerData> {
import static org.hibernate.internal.log.LoggingHelper.toLoggableString;

public class BatchEntityInsideEmbeddableSelectFetchInitializer
extends AbstractBatchEntitySelectFetchInitializer<BatchEntityInsideEmbeddableSelectFetchInitializer.BatchEntityInsideEmbeddableSelectFetchInitializerData> {
protected final Setter referencedModelPartSetter;
protected final AttributeMapping[] rootEmbeddableAttributes;
protected final Getter[] rootEmbeddableGetters;
Expand All @@ -52,7 +50,8 @@ public Object readResolve() {
}
};

public static class BatchEntityInsideEmbeddableSelectFetchInitializerData extends AbstractBatchEntitySelectFetchInitializerData {
public static class BatchEntityInsideEmbeddableSelectFetchInitializerData
extends AbstractBatchEntitySelectFetchInitializerData {
private HashMap<EntityKey, List<ParentInfo>> toBatchLoad;

public BatchEntityInsideEmbeddableSelectFetchInitializerData(
Expand Down Expand Up @@ -125,12 +124,12 @@ public void initializeInstance(BatchEntityInsideEmbeddableSelectFetchInitializer
super.initializeInstance( data );
// todo: check why this can't be moved to #registerToBatchFetchQueue
if ( data.getInstance() == BATCH_PROPERTY ) {
final RowProcessingState rowProcessingState = data.getRowProcessingState();
final var rowProcessingState = data.getRowProcessingState();
final InitializerData owningData = owningEntityInitializer.getData( rowProcessingState );
final int owningEntitySubclassId = owningEntityInitializer.getConcreteDescriptor( owningData ).getSubclassId();
final AttributeMapping rootEmbeddableAttribute = rootEmbeddableAttributes[owningEntitySubclassId];
if ( rootEmbeddableAttribute != null ) {
HashMap<EntityKey, List<ParentInfo>> toBatchLoad = data.toBatchLoad;
var toBatchLoad = data.toBatchLoad;
if ( toBatchLoad == null ) {
toBatchLoad = data.toBatchLoad = new HashMap<>();
}
Expand Down Expand Up @@ -171,14 +170,14 @@ public ParentInfo(
@Override
public void endLoading(BatchEntityInsideEmbeddableSelectFetchInitializerData data) {
super.endLoading( data );
final HashMap<EntityKey, List<ParentInfo>> toBatchLoad = data.toBatchLoad;
final var toBatchLoad = data.toBatchLoad;
if ( toBatchLoad != null ) {
for ( Map.Entry<EntityKey, List<ParentInfo>> entry : toBatchLoad.entrySet() ) {
for ( var entry : toBatchLoad.entrySet() ) {
final EntityKey entityKey = entry.getKey();
final List<ParentInfo> parentInfos = entry.getValue();
final SharedSessionContractImplementor session = data.getRowProcessingState().getSession();
final SessionFactoryImplementor factory = session.getFactory();
final PersistenceContext persistenceContext = session.getPersistenceContextInternal();
final var session = data.getRowProcessingState().getSession();
final var factory = session.getFactory();
final var persistenceContext = session.getPersistenceContextInternal();
final Object loadedInstance = loadInstance( entityKey, toOneMapping, affectedByFilter, session );
for ( ParentInfo parentInfo : parentInfos ) {
final Object parentEntityInstance = parentInfo.parentEntityInstance;
Expand All @@ -194,11 +193,11 @@ public void endLoading(BatchEntityInsideEmbeddableSelectFetchInitializerData dat
The value of RootEmbeddable is needed to update the ParentEntity loaded state
*/
final int parentEntitySubclassId = parentInfo.parentEntitySubclassId;
final Object rootEmbeddable = rootEmbeddableGetters[parentEntitySubclassId].get( parentEntityInstance );
loadedState[parentInfo.propertyIndex] = rootEmbeddablePropertyTypes[parentEntitySubclassId].deepCopy(
rootEmbeddable,
factory
);
final Object rootEmbeddable =
rootEmbeddableGetters[parentEntitySubclassId].get( parentEntityInstance );
loadedState[parentInfo.propertyIndex] =
rootEmbeddablePropertyTypes[parentEntitySubclassId]
.deepCopy( rootEmbeddable, factory );
}
}
}
Expand All @@ -223,7 +222,7 @@ protected static String getRootEmbeddablePropertyName(

@Override
public String toString() {
return "BatchEntityInsideEmbeddableSelectFetchInitializer(" + LoggingHelper.toLoggableString( getNavigablePath() ) + ")";
return "BatchEntityInsideEmbeddableSelectFetchInitializer(" + toLoggableString( getNavigablePath() ) + ")";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,9 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.engine.spi.EntityEntry;
import org.hibernate.engine.spi.EntityKey;
import org.hibernate.engine.spi.PersistenceContext;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.internal.log.LoggingHelper;
import org.hibernate.metamodel.mapping.AttributeMapping;
import org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping;
import org.hibernate.persister.entity.EntityPersister;
Expand All @@ -26,12 +22,16 @@
import org.hibernate.sql.results.jdbc.spi.RowProcessingState;
import org.hibernate.type.Type;

public class BatchEntitySelectFetchInitializer extends AbstractBatchEntitySelectFetchInitializer<BatchEntitySelectFetchInitializer.BatchEntitySelectFetchInitializerData> {
import static org.hibernate.internal.log.LoggingHelper.toLoggableString;

public class BatchEntitySelectFetchInitializer
extends AbstractBatchEntitySelectFetchInitializer<BatchEntitySelectFetchInitializer.BatchEntitySelectFetchInitializerData> {
protected final AttributeMapping[] parentAttributes;
protected final Setter referencedModelPartSetter;
protected final Type referencedModelPartType;

public static class BatchEntitySelectFetchInitializerData extends AbstractBatchEntitySelectFetchInitializerData {
public static class BatchEntitySelectFetchInitializerData
extends AbstractBatchEntitySelectFetchInitializerData {
private HashMap<EntityKey, List<ParentInfo>> toBatchLoad;

public BatchEntitySelectFetchInitializerData(
Expand Down Expand Up @@ -63,8 +63,9 @@ protected InitializerData createInitializerData(RowProcessingState rowProcessing

@Override
protected void registerResolutionListener(BatchEntitySelectFetchInitializerData data) {
final RowProcessingState rowProcessingState = data.getRowProcessingState();
final InitializerData owningData = owningEntityInitializer.getData( rowProcessingState );HashMap<EntityKey, List<ParentInfo>> toBatchLoad = data.toBatchLoad;
final var rowProcessingState = data.getRowProcessingState();
final InitializerData owningData = owningEntityInitializer.getData( rowProcessingState );
var toBatchLoad = data.toBatchLoad;
if ( toBatchLoad == null ) {
toBatchLoad = data.toBatchLoad = new HashMap<>();
}
Expand Down Expand Up @@ -96,11 +97,11 @@ public ParentInfo(Object parentInstance, int propertyIndex) {
@Override
public void endLoading(BatchEntitySelectFetchInitializerData data) {
super.endLoading( data );
final HashMap<EntityKey, List<ParentInfo>> toBatchLoad = data.toBatchLoad;
final var toBatchLoad = data.toBatchLoad;
if ( toBatchLoad != null ) {
final SharedSessionContractImplementor session = data.getRowProcessingState().getSession();
final PersistenceContext persistenceContext = session.getPersistenceContextInternal();
for ( Map.Entry<EntityKey, List<ParentInfo>> entry : toBatchLoad.entrySet() ) {
final var session = data.getRowProcessingState().getSession();
final var persistenceContext = session.getPersistenceContextInternal();
for ( var entry : toBatchLoad.entrySet() ) {
final EntityKey entityKey = entry.getKey();
final List<ParentInfo> parentInfos = entry.getValue();
final Object instance = loadInstance( entityKey, toOneMapping, affectedByFilter, session );
Expand All @@ -110,10 +111,8 @@ public void endLoading(BatchEntitySelectFetchInitializerData data) {
referencedModelPartSetter.set( parentInstance, instance );
final Object[] loadedState = entityEntry.getLoadedState();
if ( loadedState != null ) {
loadedState[parentInfo.propertyIndex] = referencedModelPartType.deepCopy(
instance,
session.getFactory()
);
loadedState[parentInfo.propertyIndex] =
referencedModelPartType.deepCopy( instance, session.getFactory() );
}
}
}
Expand All @@ -123,7 +122,7 @@ public void endLoading(BatchEntitySelectFetchInitializerData data) {

@Override
public String toString() {
return "BatchEntitySelectFetchInitializer(" + LoggingHelper.toLoggableString( getNavigablePath() ) + ")";
return "BatchEntitySelectFetchInitializer(" + toLoggableString( getNavigablePath() ) + ")";
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import java.util.HashSet;

import org.hibernate.engine.spi.EntityKey;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.internal.log.LoggingHelper;
import org.hibernate.metamodel.mapping.internal.ToOneAttributeMapping;
import org.hibernate.persister.entity.EntityPersister;
Expand All @@ -24,7 +23,8 @@
*/
public class BatchInitializeEntitySelectFetchInitializer extends AbstractBatchEntitySelectFetchInitializer<BatchInitializeEntitySelectFetchInitializer.BatchInitializeEntitySelectFetchInitializerData> {

public static class BatchInitializeEntitySelectFetchInitializerData extends AbstractBatchEntitySelectFetchInitializerData {
public static class BatchInitializeEntitySelectFetchInitializerData
extends AbstractBatchEntitySelectFetchInitializerData {
private HashSet<EntityKey> toBatchLoad;

public BatchInitializeEntitySelectFetchInitializerData(
Expand Down Expand Up @@ -65,7 +65,7 @@ protected void registerToBatchFetchQueue(BatchInitializeEntitySelectFetchInitial
false,
false
) );
HashSet<EntityKey> toBatchLoad = data.toBatchLoad;
var toBatchLoad = data.toBatchLoad;
if ( toBatchLoad == null ) {
toBatchLoad = data.toBatchLoad = new HashSet<>();
}
Expand All @@ -75,9 +75,9 @@ protected void registerToBatchFetchQueue(BatchInitializeEntitySelectFetchInitial
@Override
public void endLoading(BatchInitializeEntitySelectFetchInitializerData data) {
super.endLoading( data );
final HashSet<EntityKey> toBatchLoad = data.toBatchLoad;
final var toBatchLoad = data.toBatchLoad;
if ( toBatchLoad != null ) {
final SharedSessionContractImplementor session = data.getRowProcessingState().getSession();
final var session = data.getRowProcessingState().getSession();
for ( EntityKey key : toBatchLoad ) {
loadInstance( key, toOneMapping, affectedByFilter, session );
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@
import org.hibernate.Hibernate;
import org.hibernate.engine.spi.EntityHolder;
import org.hibernate.engine.spi.EntityKey;
import org.hibernate.engine.spi.PersistenceContext;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.internal.log.LoggingHelper;
import org.hibernate.metamodel.mapping.AttributeMapping;
import org.hibernate.metamodel.mapping.DiscriminatedAssociationModelPart;
import org.hibernate.metamodel.mapping.ModelPart;
Expand All @@ -30,6 +27,7 @@

import org.checkerframework.checker.nullness.qual.Nullable;

import static org.hibernate.internal.log.LoggingHelper.toLoggableString;
import static org.hibernate.proxy.HibernateProxy.extractLazyInitializer;

/**
Expand Down Expand Up @@ -79,14 +77,10 @@ public DiscriminatedEntityInitializer(
this.eager = eager;
this.resultInitializer = resultInitializer;
final Initializer<?> initializer = keyValueAssembler.getInitializer();
if ( initializer == null ) {
this.keyIsEager = false;
this.hasLazySubInitializer = false;
}
else {
this.keyIsEager = initializer.isEager();
this.hasLazySubInitializer = !initializer.isEager() || initializer.hasLazySubInitializers();
}
this.keyIsEager = initializer != null && initializer.isEager();
this.hasLazySubInitializer =
initializer != null
&& ( !initializer.isEager() || initializer.hasLazySubInitializers() );
}

@Override
Expand Down Expand Up @@ -116,7 +110,7 @@ public void resolveKey(DiscriminatedEntityInitializerData data) {

// resolve the key and the discriminator, and then use those to load the indicated entity

final RowProcessingState rowProcessingState = data.getRowProcessingState();
final var rowProcessingState = data.getRowProcessingState();
final Object discriminatorValue = discriminatorValueAssembler.assemble( rowProcessingState );

if ( discriminatorValue == null ) {
Expand All @@ -136,7 +130,7 @@ public void resolveKey(DiscriminatedEntityInitializerData data) {

@Override
public void resolveState(DiscriminatedEntityInitializerData data) {
final RowProcessingState rowProcessingState = data.getRowProcessingState();
final var rowProcessingState = data.getRowProcessingState();
discriminatorValueAssembler.resolveState( rowProcessingState );
keyValueAssembler.resolveState( rowProcessingState );
}
Expand Down Expand Up @@ -165,10 +159,10 @@ public void resolveInstance(DiscriminatedEntityInitializerData data) {

data.setState( State.INITIALIZED );

final SharedSessionContractImplementor session = data.getRowProcessingState().getSession();
final var session = data.getRowProcessingState().getSession();
final EntityKey entityKey = new EntityKey( data.entityIdentifier, data.concreteDescriptor );

final PersistenceContext persistenceContext = session.getPersistenceContextInternal();
final var persistenceContext = session.getPersistenceContextInternal();
final EntityHolder holder = persistenceContext.getEntityHolder( entityKey );
if ( holder != null ) {
final Object instance = holder.getEntity();
Expand Down Expand Up @@ -207,12 +201,12 @@ public void resolveInstance(Object instance, DiscriminatedEntityInitializerData
data.setInstance( null );
}
else {
final RowProcessingState rowProcessingState = data.getRowProcessingState();
final var rowProcessingState = data.getRowProcessingState();
final LazyInitializer lazyInitializer = extractLazyInitializer( instance );
if ( lazyInitializer == null ) {
data.setState( State.INITIALIZED );
if ( keyIsEager ) {
final SharedSessionContractImplementor session = rowProcessingState.getSession();
final var session = rowProcessingState.getSession();
data.concreteDescriptor = session.getEntityPersister( null, instance );
data.entityIdentifier = data.concreteDescriptor.getIdentifier( instance, session );
}
Expand Down Expand Up @@ -331,7 +325,7 @@ public boolean isResultInitializer() {

@Override
public String toString() {
return "DiscriminatedEntityInitializer(" + LoggingHelper.toLoggableString( getNavigablePath() ) + ")";
return "DiscriminatedEntityInitializer(" + toLoggableString( getNavigablePath() ) + ")";
}

}
Loading