From c22393d57b1368414b35265f881619bcdf81726f Mon Sep 17 00:00:00 2001 From: Sanne Grinovero Date: Wed, 2 Jun 2021 17:07:18 +0100 Subject: [PATCH] HHH-14650 Optimise AbstractRowReader for iterations on entity initializers --- .../exec/process/internal/AbstractRowReader.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hibernate-core/src/main/java/org/hibernate/loader/plan/exec/process/internal/AbstractRowReader.java b/hibernate-core/src/main/java/org/hibernate/loader/plan/exec/process/internal/AbstractRowReader.java index 32f8b01870..dfd5be870e 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/plan/exec/process/internal/AbstractRowReader.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/plan/exec/process/internal/AbstractRowReader.java @@ -46,7 +46,9 @@ public abstract class AbstractRowReader implements RowReader { private static final Logger log = CoreLogging.logger( AbstractRowReader.class ); - private final List entityReferenceInitializers; + private static final EntityReferenceInitializer[] EMPTY_REFERENCE_INITIALIZERS = new EntityReferenceInitializer[0]; + + private final EntityReferenceInitializer[] entityReferenceInitializers; private final List arrayReferenceInitializers; private final List collectionReferenceInitializers; @@ -56,11 +58,9 @@ public abstract class AbstractRowReader implements RowReader { public AbstractRowReader(ReaderCollector readerCollector) { if ( CollectionHelper.isNotEmpty( readerCollector.getEntityReferenceInitializers() ) ) { - entityReferenceInitializers = new ArrayList( - readerCollector.getEntityReferenceInitializers() - ); + entityReferenceInitializers = readerCollector.getEntityReferenceInitializers().toArray( EMPTY_REFERENCE_INITIALIZERS ); entityInitializerByEntityReference = - new HashMap( entityReferenceInitializers.size() ); + new HashMap( entityReferenceInitializers.length ); for ( EntityReferenceInitializer entityReferenceInitializer : entityReferenceInitializers ) { entityInitializerByEntityReference.put( entityReferenceInitializer.getEntityReference(), @@ -69,7 +69,7 @@ public AbstractRowReader(ReaderCollector readerCollector) { } } else { - entityReferenceInitializers = Collections.emptyList(); + entityReferenceInitializers = EMPTY_REFERENCE_INITIALIZERS; entityInitializerByEntityReference = Collections.emptyMap(); } this.arrayReferenceInitializers = readerCollector.getArrayReferenceInitializers(); @@ -82,7 +82,7 @@ protected abstract Object readLogicalRow(ResultSet resultSet, ResultSetProcessin @Override public Object readRow(ResultSet resultSet, ResultSetProcessingContextImpl context) throws SQLException { - final boolean hasEntityReferenceInitializers = CollectionHelper.isNotEmpty( entityReferenceInitializers ); + final boolean hasEntityReferenceInitializers = entityReferenceInitializers.length != 0; if ( hasEntityReferenceInitializers ) { // 1) allow entity references to resolve identifiers (in 2 steps)