Skip to content

Commit 7fda1e0

Browse files
committed
some minor cleanups
Signed-off-by: Gavin King <[email protected]>
1 parent de6aa69 commit 7fda1e0

File tree

3 files changed

+57
-64
lines changed

3 files changed

+57
-64
lines changed

hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.hibernate.HibernateException;
2626
import org.hibernate.Interceptor;
2727
import org.hibernate.LockMode;
28+
import org.hibernate.LockOptions;
2829
import org.hibernate.SessionEventListener;
2930
import org.hibernate.SessionException;
3031
import org.hibernate.Transaction;
@@ -76,6 +77,7 @@
7677
import org.hibernate.query.criteria.JpaCriteriaInsert;
7778
import org.hibernate.query.criteria.JpaCriteriaInsertSelect;
7879
import org.hibernate.query.hql.spi.SqmQueryImplementor;
80+
import org.hibernate.query.named.NamedObjectRepository;
7981
import org.hibernate.query.named.NamedResultSetMappingMemento;
8082
import org.hibernate.query.spi.HqlInterpretation;
8183
import org.hibernate.query.spi.QueryImplementor;
@@ -85,7 +87,6 @@
8587
import org.hibernate.query.sqm.SqmSelectionQuery;
8688
import org.hibernate.query.sqm.internal.QuerySqmImpl;
8789
import org.hibernate.query.sqm.internal.SqmSelectionQueryImpl;
88-
import org.hibernate.query.sqm.internal.SqmUtil;
8990
import org.hibernate.query.sqm.spi.NamedSqmQueryMemento;
9091
import org.hibernate.query.sqm.tree.SqmDmlStatement;
9192
import org.hibernate.query.sqm.tree.SqmStatement;
@@ -122,6 +123,7 @@
122123
import static org.hibernate.internal.util.StringHelper.isEmpty;
123124
import static org.hibernate.internal.util.StringHelper.isNotEmpty;
124125
import static org.hibernate.jpa.internal.util.FlushModeTypeHelper.getFlushModeType;
126+
import static org.hibernate.query.sqm.internal.SqmUtil.verifyIsSelectStatement;
125127

126128
/**
127129
* Base class for implementations of {@link org.hibernate.SharedSessionContract} and
@@ -858,11 +860,11 @@ public <R> SelectionQuery<R> createSelectionQuery(String hqlString, Class<R> exp
858860

859861
@Override
860862
public <R> SelectionQuery<R> createSelectionQuery(CriteriaQuery<R> criteria) {
861-
if ( criteria instanceof CriteriaDefinition ) {
862-
return ((CriteriaDefinition<R>) criteria).createSelectionQuery(this);
863+
if ( criteria instanceof CriteriaDefinition<R> criteriaDefinition ) {
864+
return criteriaDefinition.createSelectionQuery(this);
863865
}
864866
else {
865-
SqmUtil.verifyIsSelectStatement( (SqmStatement<?>) criteria, null );
867+
verifyIsSelectStatement( (SqmStatement<?>) criteria, null );
866868
return new SqmSelectionQueryImpl<>( (SqmSelectStatement<R>) criteria, criteria.getResultType(), this );
867869
}
868870
}
@@ -940,8 +942,7 @@ public NativeQueryImplementor createNativeQuery(String sqlString, String resultS
940942

941943
protected NamedResultSetMappingMemento getResultSetMappingMemento(String resultSetMappingName) {
942944
final NamedResultSetMappingMemento resultSetMappingMemento =
943-
getFactory().getQueryEngine().getNamedObjectRepository()
944-
.getResultSetMappingMemento( resultSetMappingName );
945+
namedObjectRepository().getResultSetMappingMemento( resultSetMappingName );
945946
if ( resultSetMappingMemento == null ) {
946947
throw new HibernateException( "Could not resolve specified result-set mapping name: "
947948
+ resultSetMappingName );
@@ -1048,14 +1049,16 @@ public <R> SelectionQuery<R> createNamedSelectionQuery(String queryName, Class<R
10481049
);
10491050
}
10501051

1052+
private NamedObjectRepository namedObjectRepository() {
1053+
return getFactory().getQueryEngine().getNamedObjectRepository();
1054+
}
1055+
10511056
private NamedSqmQueryMemento getSqmQueryMemento(String queryName) {
1052-
return getFactory().getQueryEngine().getNamedObjectRepository()
1053-
.getSqmQueryMemento( queryName );
1057+
return namedObjectRepository().getSqmQueryMemento( queryName );
10541058
}
10551059

10561060
private NamedNativeQueryMemento getNativeQueryMemento(String queryName) {
1057-
return getFactory().getQueryEngine().getNamedObjectRepository()
1058-
.getNativeQueryMemento( queryName );
1061+
return namedObjectRepository().getNativeQueryMemento( queryName );
10591062
}
10601063

10611064
private <R> SelectionQuery<R> createNamedNativeSelectionQuery(
@@ -1068,15 +1071,12 @@ private <R> SqmSelectionQuery<R> createNamedSqmSelectionQuery(
10681071
NamedSqmQueryMemento memento,
10691072
Class<R> expectedResultType) {
10701073
final SqmSelectionQuery<R> selectionQuery = memento.toSelectionQuery( expectedResultType, this );
1071-
if ( isEmpty( memento.getComment() ) ) {
1072-
selectionQuery.setComment( "Named query : " + memento.getRegistrationName() );
1073-
}
1074-
else {
1075-
selectionQuery.setComment( memento.getComment() );
1076-
}
1074+
final String comment = memento.getComment();
1075+
selectionQuery.setComment( isEmpty( comment ) ? "Named query : " + memento.getRegistrationName() : comment );
10771076
applyQuerySettingsAndHints( selectionQuery );
1078-
if ( memento.getLockOptions() != null ) {
1079-
selectionQuery.getLockOptions().overlay( memento.getLockOptions() );
1077+
final LockOptions lockOptions = memento.getLockOptions();
1078+
if ( lockOptions != null ) {
1079+
selectionQuery.getLockOptions().overlay( lockOptions );
10801080
}
10811081
return selectionQuery;
10821082
}
@@ -1426,8 +1426,8 @@ public HibernateCriteriaBuilder getCriteriaBuilder() {
14261426
@Override
14271427
public <T> QueryImplementor<T> createQuery(CriteriaQuery<T> criteriaQuery) {
14281428
checkOpen();
1429-
if ( criteriaQuery instanceof CriteriaDefinition ) {
1430-
return (QueryImplementor<T>) ((CriteriaDefinition<T>) criteriaQuery).createSelectionQuery(this);
1429+
if ( criteriaQuery instanceof CriteriaDefinition<T> criteriaDefinition ) {
1430+
return (QueryImplementor<T>) criteriaDefinition.createSelectionQuery(this);
14311431
}
14321432
else {
14331433
try {

hibernate-core/src/main/java/org/hibernate/internal/SessionImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1655,8 +1655,8 @@ public SessionFactoryImplementor getSessionFactory() {
16551655
@Override
16561656
public <T> QueryImplementor<T> createQuery(CriteriaSelect<T> selectQuery) {
16571657
checkOpen();
1658-
if ( selectQuery instanceof CriteriaDefinition ) {
1659-
return (QueryImplementor<T>) ((CriteriaDefinition<T>) selectQuery).createSelectionQuery(this);
1658+
if ( selectQuery instanceof CriteriaDefinition<T> criteriaDefinition ) {
1659+
return (QueryImplementor<T>) criteriaDefinition.createSelectionQuery(this);
16601660
}
16611661
else {
16621662
try {

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/QuerySqmImpl.java

Lines changed: 35 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -221,12 +221,11 @@ public QuerySqmImpl(
221221

222222
// Parameters might be created through HibernateCriteriaBuilder.value which we need to bind here
223223
for ( SqmParameter<?> sqmParameter : domainParameterXref.getParameterResolutions().getSqmParameters() ) {
224-
if ( sqmParameter instanceof SqmJpaCriteriaParameterWrapper<?> ) {
225-
bindCriteriaParameter((SqmJpaCriteriaParameterWrapper<?>) sqmParameter);
224+
if ( sqmParameter instanceof SqmJpaCriteriaParameterWrapper<?> wrapper ) {
225+
bindCriteriaParameter( wrapper );
226226
}
227227
}
228-
if ( sqm instanceof SqmSelectStatement<?> ) {
229-
final SqmSelectStatement<R> selectStatement = (SqmSelectStatement<R>) sqm;
228+
if ( sqm instanceof SqmSelectStatement<R> selectStatement ) {
230229
final SqmQueryPart<R> queryPart = selectStatement.getQueryPart();
231230
// For criteria queries, we have to validate the fetch structure here
232231
queryPart.validateQueryStructureAndFetchOwners();
@@ -464,13 +463,13 @@ public boolean isQueryPlanCacheable() {
464463

465464
private SelectQueryPlan<R> resolveSelectQueryPlan() {
466465
final QueryInterpretationCache.Key cacheKey = createInterpretationsKey( this );
467-
if ( cacheKey != null ) {
468-
return getSession().getFactory().getQueryEngine().getInterpretationCache()
469-
.resolveSelectQueryPlan( cacheKey, this::buildSelectQueryPlan );
470-
}
471-
else {
472-
return buildSelectQueryPlan();
473-
}
466+
return cacheKey != null
467+
? interpretationCache().resolveSelectQueryPlan( cacheKey, this::buildSelectQueryPlan )
468+
: buildSelectQueryPlan();
469+
}
470+
471+
private QueryInterpretationCache interpretationCache() {
472+
return getSessionFactory().getQueryEngine().getInterpretationCache();
474473
}
475474

476475

@@ -525,8 +524,7 @@ private NonSelectQueryPlan resolveNonSelectQueryPlan() {
525524
NonSelectQueryPlan queryPlan = null;
526525

527526
final QueryInterpretationCache.Key cacheKey = generateNonSelectKey( this );
528-
final QueryInterpretationCache interpretationCache =
529-
getSessionFactory().getQueryEngine().getInterpretationCache();
527+
final QueryInterpretationCache interpretationCache = interpretationCache();
530528
if ( cacheKey != null ) {
531529
queryPlan = interpretationCache.getNonSelectQueryPlan( cacheKey );
532530
}
@@ -544,19 +542,19 @@ private NonSelectQueryPlan resolveNonSelectQueryPlan() {
544542
private NonSelectQueryPlan buildNonSelectQueryPlan() {
545543
// to get here the SQM statement has already been validated to be
546544
// a non-select variety...
547-
if ( getSqmStatement() instanceof SqmDeleteStatement<?> ) {
545+
final SqmStatement<R> sqmStatement = getSqmStatement();
546+
if ( sqmStatement instanceof SqmDeleteStatement<?> ) {
548547
return buildDeleteQueryPlan();
549548
}
550-
551-
if ( getSqmStatement() instanceof SqmUpdateStatement<?> ) {
549+
else if ( sqmStatement instanceof SqmUpdateStatement<?> ) {
552550
return buildUpdateQueryPlan();
553551
}
554-
555-
if ( getSqmStatement() instanceof SqmInsertStatement<?> ) {
552+
else if ( sqmStatement instanceof SqmInsertStatement<?> ) {
556553
return buildInsertQueryPlan();
557554
}
558-
559-
throw new UnsupportedOperationException( "Query#executeUpdate for Statements of type [" + getSqmStatement() + "] not supported" );
555+
else {
556+
throw new UnsupportedOperationException( "Query#executeUpdate for Statements of type [" + sqmStatement + "] not supported" );
557+
}
560558
}
561559

562560
private NonSelectQueryPlan buildDeleteQueryPlan() {
@@ -569,8 +567,9 @@ private NonSelectQueryPlan buildDeleteQueryPlan() {
569567

570568
private NonSelectQueryPlan buildConcreteDeleteQueryPlan(SqmDeleteStatement<?> sqmDelete) {
571569
final EntityDomainType<?> entityDomainType = sqmDelete.getTarget().getModel();
572-
final String entityNameToDelete = entityDomainType.getHibernateEntityName();
573-
final EntityPersister persister = getSessionFactory().getMappingMetamodel().getEntityDescriptor( entityNameToDelete );
570+
final EntityPersister persister =
571+
getSessionFactory().getMappingMetamodel()
572+
.getEntityDescriptor( entityDomainType.getHibernateEntityName() );
574573
final SqmMultiTableMutationStrategy multiTableStrategy = persister.getSqmMultiTableMutationStrategy();
575574
if ( multiTableStrategy != null ) {
576575
// NOTE : MultiTableDeleteQueryPlan and SqmMultiTableMutationStrategy already handle soft-deletes internally
@@ -591,11 +590,9 @@ private NonSelectQueryPlan buildAggregatedDeleteQueryPlan(SqmDeleteStatement<?>[
591590

592591
private NonSelectQueryPlan buildUpdateQueryPlan() {
593592
final SqmUpdateStatement<R> sqmUpdate = (SqmUpdateStatement<R>) getSqmStatement();
594-
595-
final String entityNameToUpdate = sqmUpdate.getTarget().getModel().getHibernateEntityName();
596593
final EntityPersister persister =
597-
getSessionFactory().getMappingMetamodel().getEntityDescriptor( entityNameToUpdate );
598-
594+
getSessionFactory().getMappingMetamodel()
595+
.getEntityDescriptor( sqmUpdate.getTarget().getModel().getHibernateEntityName() );
599596
final SqmMultiTableMutationStrategy multiTableStrategy = persister.getSqmMultiTableMutationStrategy();
600597
return multiTableStrategy == null
601598
? new SimpleUpdateQueryPlan( sqmUpdate, domainParameterXref )
@@ -604,17 +601,16 @@ private NonSelectQueryPlan buildUpdateQueryPlan() {
604601

605602
private NonSelectQueryPlan buildInsertQueryPlan() {
606603
final SqmInsertStatement<R> sqmInsert = (SqmInsertStatement<R>) getSqmStatement();
607-
608-
final String entityNameToInsert = sqmInsert.getTarget().getModel().getHibernateEntityName();
609604
final EntityPersister persister =
610-
getSessionFactory().getMappingMetamodel().getEntityDescriptor( entityNameToInsert );
605+
getSessionFactory().getMappingMetamodel()
606+
.getEntityDescriptor( sqmInsert.getTarget().getModel().getHibernateEntityName() );
611607

612608
boolean useMultiTableInsert = persister.hasMultipleTables();
613609
if ( !useMultiTableInsert && !isSimpleValuesInsert( sqmInsert, persister ) ) {
614610
final Generator identifierGenerator = persister.getGenerator();
615611
if ( identifierGenerator instanceof BulkInsertionCapableIdentifierGenerator
616-
&& identifierGenerator instanceof OptimizableGenerator ) {
617-
final Optimizer optimizer = ( (OptimizableGenerator) identifierGenerator ).getOptimizer();
612+
&& identifierGenerator instanceof OptimizableGenerator optimizableGenerator ) {
613+
final Optimizer optimizer = optimizableGenerator.getOptimizer();
618614
if ( optimizer != null && optimizer.getIncrementSize() > 1 ) {
619615
useMultiTableInsert = !hasIdentifierAssigned( sqmInsert, persister );
620616
}
@@ -627,15 +623,15 @@ private NonSelectQueryPlan buildInsertQueryPlan() {
627623
persister.getSqmMultiTableInsertStrategy()
628624
);
629625
}
630-
else if ( sqmInsert instanceof SqmInsertValuesStatement<?>
631-
&& ( (SqmInsertValuesStatement<R>) sqmInsert ).getValuesList().size() != 1
626+
else if ( sqmInsert instanceof SqmInsertValuesStatement<R> insertValues
627+
&& insertValues.getValuesList().size() != 1
632628
&& !getSessionFactory().getJdbcServices().getDialect().supportsValuesListForInsert() ) {
633629
// Split insert-values queries if the dialect doesn't support values lists
634-
final SqmInsertValuesStatement<R> insertValues = (SqmInsertValuesStatement<R>) sqmInsert;
635630
final List<SqmValues> valuesList = insertValues.getValuesList();
636631
final NonSelectQueryPlan[] planParts = new NonSelectQueryPlan[valuesList.size()];
637632
for ( int i = 0; i < valuesList.size(); i++ ) {
638-
final SqmInsertValuesStatement<?> subInsert = insertValues.copyWithoutValues( SqmCopyContext.simpleContext() );
633+
final SqmInsertValuesStatement<?> subInsert =
634+
insertValues.copyWithoutValues( SqmCopyContext.simpleContext() );
639635
subInsert.values( valuesList.get( i ) );
640636
planParts[i] = new SimpleInsertQueryPlan( subInsert, domainParameterXref );
641637
}
@@ -652,13 +648,10 @@ protected boolean hasIdentifierAssigned(SqmInsertStatement<?> sqmInsert, EntityP
652648
? identifierMapping.getAttributeName()
653649
: EntityIdentifierMapping.ID_ROLE_NAME;
654650
for ( SqmPath<?> insertionTargetPath : sqmInsert.getInsertionTargetPaths() ) {
655-
final SqmPath<?> lhs = insertionTargetPath.getLhs();
656-
if ( !( lhs instanceof SqmRoot<?> ) ) {
657-
continue;
658-
}
659-
final SqmPathSource<?> referencedPathSource = insertionTargetPath.getReferencedPathSource();
660-
if ( referencedPathSource.getPathName().equals( partName ) ) {
661-
return true;
651+
if ( insertionTargetPath.getLhs() instanceof SqmRoot<?> ) {
652+
if ( insertionTargetPath.getReferencedPathSource().getPathName().equals( partName ) ) {
653+
return true;
654+
}
662655
}
663656
}
664657

0 commit comments

Comments
 (0)