Skip to content

Commit 29ade08

Browse files
committed
more cleanups in org.hibernate.loader.ast.internal
1 parent 3d56536 commit 29ade08

27 files changed

+484
-604
lines changed

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractCollectionBatchLoader.java

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@
1111
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1212
import org.hibernate.internal.build.AllowReflection;
1313
import org.hibernate.loader.ast.spi.CollectionBatchLoader;
14-
import org.hibernate.metamodel.mapping.NonAggregatedIdentifierMapping;
1514
import org.hibernate.metamodel.mapping.PluralAttributeMapping;
16-
import org.hibernate.metamodel.mapping.ValuedModelPart;
1715
import org.hibernate.sql.results.internal.ResultsHelper;
1816

1917

@@ -123,7 +121,6 @@ protected void finishInitializingKey(Object key, SharedSessionContractImplemento
123121
@AllowReflection
124122
Object[] resolveKeysToInitialize(Object keyBeingLoaded, SharedSessionContractImplementor session) {
125123
final int length = getDomainBatchSize();
126-
final var keyType = getKeyType( getLoadable().getKeyDescriptor().getKeyPart() );
127124
final Object[] keysToInitialize = new Object[length];
128125
session.getPersistenceContextInternal().getBatchFetchQueue()
129126
.collectBatchLoadableCollectionKeys(
@@ -135,14 +132,4 @@ Object[] resolveKeysToInitialize(Object keyBeingLoaded, SharedSessionContractImp
135132
// now trim down the array to the number of keys we found
136133
return trimIdBatch( length, keysToInitialize );
137134
}
138-
139-
protected Class<?> getKeyType(ValuedModelPart keyPart) {
140-
if ( keyPart instanceof NonAggregatedIdentifierMapping nonAggregatedIdentifierMapping ) {
141-
final var idClassEmbeddable = nonAggregatedIdentifierMapping.getIdClassEmbeddable();
142-
if ( idClassEmbeddable != null ) {
143-
return idClassEmbeddable.getMappedJavaType().getJavaTypeClass();
144-
}
145-
}
146-
return keyPart.getJavaType().getJavaTypeClass();
147-
}
148135
}

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractMultiIdEntityLoader.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,18 +123,15 @@ private List<T> orderedMultiLoad(
123123
for ( int i = 0; i < ids.length; i++ ) {
124124
final Object id = idCoercionEnabled ? idType.coerce( ids[i], session ) : ids[i];
125125
final var entityKey = new EntityKey( id, getLoadable().getEntityPersister() );
126-
127126
if ( !loadFromEnabledCaches( loadOptions, session, id, lockOptions, entityKey, results, i ) ) {
128127
// if we did not hit any of the continues above,
129128
// then we need to batch load the entity state.
130129
idsInBatch.add( id );
131-
132130
if ( idsInBatch.size() >= maxBatchSize ) {
133131
// we've hit the allotted max-batch-size, perform an "intermediate load"
134132
loadEntitiesById( idsInBatch, lockOptions, loadOptions, session );
135133
idsInBatch.clear();
136134
}
137-
138135
// Save the EntityKey instance for use later
139136
results.add( i, entityKey );
140137
elementPositionsLoadedByBatch.add( i );
@@ -284,7 +281,7 @@ private <R> Object[] resolveInCachesIfEnabled(
284281
// the user requested that we exclude ids corresponding to already managed
285282
// entities from the generated load SQL. So here we will iterate all
286283
// incoming id values and see whether it corresponds to an existing
287-
// entity associated with the PC. If it does, we add it to the results
284+
// entity associated with the PC. If it does, we add it to the result
288285
// list immediately and remove its id from the group of ids to load.
289286
// we'll load all of them from the database
290287
? resolveInCaches( ids, loadOptions, lockOptions, session, resolutionConsumer )

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java

Lines changed: 44 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,6 @@
44
*/
55
package org.hibernate.loader.ast.internal;
66

7-
import java.util.Arrays;
8-
import java.util.List;
9-
import java.util.Locale;
10-
import java.util.function.BiConsumer;
11-
import java.util.function.Consumer;
12-
137
import org.hibernate.HibernateException;
148
import org.hibernate.LockOptions;
159
import org.hibernate.engine.spi.LoadQueryInfluencers;
@@ -31,27 +25,30 @@
3125
import org.hibernate.sql.ast.tree.expression.Expression;
3226
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
3327
import org.hibernate.sql.ast.tree.from.TableGroup;
34-
import org.hibernate.sql.ast.tree.from.TableReference;
3528
import org.hibernate.sql.ast.tree.predicate.ComparisonPredicate;
3629
import org.hibernate.sql.ast.tree.predicate.NullnessPredicate;
3730
import org.hibernate.sql.ast.tree.predicate.Predicate;
3831
import org.hibernate.sql.ast.tree.select.QuerySpec;
3932
import org.hibernate.sql.ast.tree.select.SelectStatement;
4033
import org.hibernate.sql.exec.internal.BaseExecutionContext;
4134
import org.hibernate.sql.exec.internal.CallbackImpl;
35+
import org.hibernate.sql.exec.internal.JdbcOperationQuerySelect;
4236
import org.hibernate.sql.exec.internal.JdbcParameterBindingImpl;
4337
import org.hibernate.sql.exec.internal.JdbcParameterBindingsImpl;
4438
import org.hibernate.sql.exec.internal.JdbcParameterImpl;
4539
import org.hibernate.sql.exec.spi.Callback;
46-
import org.hibernate.sql.exec.internal.JdbcOperationQuerySelect;
4740
import org.hibernate.sql.exec.spi.JdbcParameterBinding;
4841
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
4942
import org.hibernate.sql.exec.spi.JdbcParametersList;
50-
import org.hibernate.sql.results.graph.*;
5143
import org.hibernate.sql.results.graph.internal.ImmutableFetchList;
5244
import org.hibernate.sql.results.internal.RowTransformerSingularReturnImpl;
5345
import org.hibernate.sql.results.spi.ListResultsConsumer;
54-
import org.hibernate.stat.spi.StatisticsImplementor;
46+
47+
import java.util.Arrays;
48+
import java.util.List;
49+
import java.util.Locale;
50+
import java.util.function.BiConsumer;
51+
import java.util.function.Consumer;
5552

5653
import static java.util.Collections.emptyList;
5754
import static java.util.Collections.singletonList;
@@ -90,13 +87,14 @@ public EntityMappingType getLoadable() {
9087

9188
@Override
9289
public T load(Object naturalIdValue, NaturalIdLoadOptions options, SharedSessionContractImplementor session) {
93-
final SessionFactoryImplementor factory = session.getFactory();
90+
final var factory = session.getFactory();
9491

95-
final LockOptions lockOptions = options.getLockOptions() == null
96-
? new LockOptions()
97-
: options.getLockOptions();
92+
final var lockOptions =
93+
options.getLockOptions() == null
94+
? new LockOptions()
95+
: options.getLockOptions();
9896

99-
final SelectStatement sqlSelect = LoaderSelectBuilder.createSelect(
97+
final var sqlSelect = LoaderSelectBuilder.createSelect(
10098
getLoadable(),
10199
null, // null here means to select everything
102100
true,
@@ -109,7 +107,7 @@ public T load(Object naturalIdValue, NaturalIdLoadOptions options, SharedSession
109107
factory
110108
);
111109

112-
final QuerySpec querySpec = sqlSelect.getQuerySpec();
110+
final var querySpec = sqlSelect.getQuerySpec();
113111
return executeNaturalIdQuery(
114112
naturalIdValue,
115113
lockOptions,
@@ -150,7 +148,7 @@ protected Expression resolveColumnReference(
150148
TableGroup rootTableGroup,
151149
SelectableMapping selectableMapping,
152150
SqlExpressionResolver sqlExpressionResolver) {
153-
final TableReference tableReference =
151+
final var tableReference =
154152
rootTableGroup.getTableReference( rootTableGroup.getNavigablePath(),
155153
selectableMapping.getContainingTableExpression() );
156154
if ( tableReference == null ) {
@@ -177,22 +175,23 @@ public Object resolveNaturalIdToId(Object naturalIdValue, SharedSessionContractI
177175
);
178176
}
179177

180-
final SessionFactoryImplementor factory = session.getFactory();
181-
final NavigablePath entityPath = new NavigablePath( entityDescriptor.getRootPathName() );
182-
final QuerySpec rootQuerySpec = new QuerySpec( true );
178+
final var factory = session.getFactory();
179+
final var entityPath = new NavigablePath( entityDescriptor.getRootPathName() );
180+
final var rootQuerySpec = new QuerySpec( true );
183181

184-
final LoaderSqlAstCreationState sqlAstCreationState = new LoaderSqlAstCreationState(
185-
rootQuerySpec,
186-
new SqlAliasBaseManager(),
187-
new SimpleFromClauseAccessImpl(),
188-
LockOptions.NONE,
189-
(fetchParent, creationState) -> ImmutableFetchList.EMPTY,
190-
true,
191-
new LoadQueryInfluencers( factory ),
192-
factory.getSqlTranslationEngine()
193-
);
182+
final var sqlAstCreationState =
183+
new LoaderSqlAstCreationState(
184+
rootQuerySpec,
185+
new SqlAliasBaseManager(),
186+
new SimpleFromClauseAccessImpl(),
187+
LockOptions.NONE,
188+
(fetchParent, creationState) -> ImmutableFetchList.EMPTY,
189+
true,
190+
new LoadQueryInfluencers( factory ),
191+
factory.getSqlTranslationEngine()
192+
);
194193

195-
final TableGroup rootTableGroup = entityDescriptor.createRootTableGroup(
194+
final var rootTableGroup = entityDescriptor.createRootTableGroup(
196195
true,
197196
entityPath,
198197
null,
@@ -204,7 +203,7 @@ public Object resolveNaturalIdToId(Object naturalIdValue, SharedSessionContractI
204203
rootQuerySpec.getFromClause().addRoot( rootTableGroup );
205204
sqlAstCreationState.getFromClauseAccess().registerTableGroup( entityPath, rootTableGroup );
206205

207-
final DomainResult<?> domainResult =
206+
final var domainResult =
208207
entityDescriptor.getIdentifierMapping().createDomainResult(
209208
rootTableGroup.getNavigablePath()
210209
.append( EntityIdentifierMapping.ID_ROLE_NAME ),
@@ -232,9 +231,9 @@ protected <R> R executeNaturalIdQuery(
232231
Consumer<Predicate> predicateConsumer,
233232
LoaderSqlAstCreationState sqlAstCreationState,
234233
SharedSessionContractImplementor session) {
235-
final SessionFactoryImplementor factory = session.getFactory();
234+
final var factory = session.getFactory();
236235

237-
final JdbcParameterBindings bindings =
236+
final var bindings =
238237
new JdbcParameterBindingsImpl( naturalIdMapping.getJdbcTypeCount() );
239238
applyNaturalIdRestriction(
240239
naturalIdMapping().normalizeInput( naturalIdValue ),
@@ -245,10 +244,10 @@ protected <R> R executeNaturalIdQuery(
245244
session
246245
);
247246

248-
final QueryOptions queryOptions = new SimpleQueryOptions( lockOptions, false );
247+
final var queryOptions = new SimpleQueryOptions( lockOptions, false );
249248
final var jdbcSelect = createJdbcOperationQuerySelect( sqlSelect, factory, bindings, queryOptions );
250249

251-
final StatisticsImplementor statistics = factory.getStatistics();
250+
final var statistics = factory.getStatistics();
252251
final boolean statisticsEnabled = statistics.isStatisticsEnabled();
253252
final long startTime = statisticsEnabled ? System.nanoTime() : -1L;
254253

@@ -296,11 +295,11 @@ private static JdbcOperationQuerySelect createJdbcOperationQuerySelect(
296295

297296
@Override
298297
public Object resolveIdToNaturalId(Object id, SharedSessionContractImplementor session) {
299-
final SessionFactoryImplementor factory = session.getFactory();
300-
final EntityIdentifierMapping identifierMapping = entityDescriptor().getIdentifierMapping();
298+
final var factory = session.getFactory();
299+
final var identifierMapping = entityDescriptor().getIdentifierMapping();
301300

302-
final JdbcParametersList.Builder builder = JdbcParametersList.newBuilder();
303-
final SelectStatement sqlSelect = LoaderSelectBuilder.createSelect(
301+
final var builder = JdbcParametersList.newBuilder();
302+
final var sqlSelect = LoaderSelectBuilder.createSelect(
304303
entityDescriptor(),
305304
singletonList( naturalIdMapping() ),
306305
identifierMapping,
@@ -311,8 +310,8 @@ public Object resolveIdToNaturalId(Object id, SharedSessionContractImplementor s
311310
builder::add,
312311
factory
313312
);
314-
final JdbcParametersList jdbcParameters = builder.build();
315-
final JdbcParameterBindings bindings = new JdbcParameterBindingsImpl( jdbcParameters.size() );
313+
final var jdbcParameters = builder.build();
314+
final var bindings = new JdbcParameterBindingsImpl( jdbcParameters.size() );
316315
final int offset = bindings.registerParametersForEachJdbcValue( id, identifierMapping, jdbcParameters, session );
317316
assert offset == jdbcParameters.size();
318317

@@ -350,14 +349,14 @@ void applyRestriction(
350349
Object jdbcValue,
351350
SelectableMapping jdbcValueMapping,
352351
SqlExpressionResolver expressionResolver) {
353-
final Expression columnReference =
352+
final var columnReference =
354353
resolveColumnReference( rootTableGroup, jdbcValueMapping, expressionResolver );
355354
if ( jdbcValue == null ) {
356355
predicateConsumer.accept( new NullnessPredicate( columnReference ) );
357356
}
358357
else {
359-
final JdbcParameter jdbcParameter = new JdbcParameterImpl( jdbcValueMapping.getJdbcMapping() );
360-
final ComparisonPredicate predicate =
358+
final var jdbcParameter = new JdbcParameterImpl( jdbcValueMapping.getJdbcMapping() );
359+
final var predicate =
361360
new ComparisonPredicate( columnReference, ComparisonOperator.EQUAL, jdbcParameter );
362361
predicateConsumer.accept( predicate );
363362
jdbcParameterConsumer.accept( jdbcParameter,

hibernate-core/src/main/java/org/hibernate/loader/ast/internal/CollectionBatchLoaderArrayParam.java

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.hibernate.sql.results.internal.RowTransformerStandardImpl;
3131
import org.hibernate.sql.results.spi.ListResultsConsumer;
3232

33-
import static java.lang.reflect.Array.newInstance;
3433
import static org.hibernate.loader.ast.internal.MultiKeyLoadHelper.hasSingleId;
3534
import static org.hibernate.loader.ast.internal.MultiKeyLoadHelper.trimIdBatch;
3635
import static org.hibernate.loader.ast.internal.MultiKeyLoadLogging.MULTI_KEY_LOAD_LOGGER;
@@ -44,7 +43,7 @@
4443
public class CollectionBatchLoaderArrayParam
4544
extends AbstractCollectionBatchLoader
4645
implements SqlArrayMultiKeyLoader {
47-
private final Class<?> keyDomainType;
46+
4847
private final JdbcMapping arrayJdbcMapping;
4948
private final JdbcParameter jdbcParameter;
5049
private final SelectStatement sqlSelect;
@@ -67,7 +66,6 @@ public CollectionBatchLoaderArrayParam(
6766
final var keyDescriptor = getLoadable().getKeyDescriptor();
6867
final var jdbcMapping = keyDescriptor.getSingleJdbcMapping();
6968
final var jdbcJavaTypeClass = jdbcMapping.getJdbcJavaType().getJavaTypeClass();
70-
keyDomainType = getKeyType( keyDescriptor.getKeyPart() );
7169

7270
arrayJdbcMapping = MultiKeyLoadHelper.resolveArrayJdbcMapping(
7371
jdbcMapping,
@@ -118,14 +116,7 @@ private PersistentCollection<?> loadEmbeddable(
118116
}
119117

120118
final int length = getDomainBatchSize();
121-
final Object[] keysToInitialize = (Object[]) newInstance(
122-
jdbcParameter.getExpressionType()
123-
.getSingleJdbcMapping()
124-
.getJdbcJavaType()
125-
.getJavaTypeClass()
126-
.getComponentType(),
127-
length
128-
);
119+
final Object[] keysToInitialize = new Object[length];
129120
final Object[] embeddedKeys = new Object[length];
130121
session.getPersistenceContextInternal().getBatchFetchQueue()
131122
.collectBatchLoadableCollectionKeys(
@@ -157,11 +148,12 @@ private PersistentCollection<?> loadEmbeddable(
157148
finishInitializingKey( initializedKey, session );
158149
}
159150
}
160-
final var collectionKey = new CollectionKey(
161-
getLoadable().getCollectionDescriptor(),
162-
keyBeingLoaded
163-
);
164-
return session.getPersistenceContext().getCollection( collectionKey );
151+
return session.getPersistenceContext()
152+
.getCollection( collectionKey( keyBeingLoaded ) );
153+
}
154+
155+
private CollectionKey collectionKey(Object keyBeingLoaded) {
156+
return new CollectionKey( getLoadable().getCollectionDescriptor(), keyBeingLoaded );
165157
}
166158

167159
@Override

0 commit comments

Comments
 (0)