Skip to content

Commit cb7b02b

Browse files
committed
add a mini-SPI for use by Hibernate Reactive
@DavideD does this help?
1 parent adea0df commit cb7b02b

File tree

6 files changed

+49
-20
lines changed

6 files changed

+49
-20
lines changed

hibernate-core/src/main/java/org/hibernate/query/spi/QueryInterpretationCache.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import org.hibernate.Incubating;
1111
import org.hibernate.query.hql.HqlTranslator;
1212
import org.hibernate.query.sql.spi.ParameterInterpretation;
13+
import org.hibernate.query.sqm.internal.SqmInterpretationsKey;
14+
import org.hibernate.query.sqm.spi.InterpretationsKeySource;
1315

1416
/**
1517
* Cache for various parts of translating or interpreting queries.
@@ -31,6 +33,11 @@ default Key prepareForStore() {
3133
String getQueryString();
3234
}
3335

36+
// Used by Hibernate Reactive
37+
static Key createInterpretationsKey(InterpretationsKeySource keySource) {
38+
return SqmInterpretationsKey.createInterpretationsKey(keySource);
39+
}
40+
3441
int getNumberOfCachedHqlInterpretations();
3542
int getNumberOfCachedQueryPlans();
3643

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@
5858
import org.hibernate.query.spi.QueryParameterBindings;
5959
import org.hibernate.query.spi.ScrollableResultsImplementor;
6060
import org.hibernate.query.spi.SelectQueryPlan;
61-
import org.hibernate.query.sqm.internal.SqmInterpretationsKey.InterpretationsKeySource;
6261
import org.hibernate.query.sqm.mutation.spi.SqmMultiTableMutationStrategy;
62+
import org.hibernate.query.sqm.spi.InterpretationsKeySource;
6363
import org.hibernate.query.sqm.spi.NamedSqmQueryMemento;
6464
import org.hibernate.query.sqm.tree.AbstractSqmDmlStatement;
6565
import org.hibernate.query.sqm.tree.SqmCopyContext;

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

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,34 +7,18 @@
77
import java.util.Collection;
88
import java.util.Objects;
99
import java.util.Set;
10-
import java.util.function.BooleanSupplier;
1110

1211
import org.hibernate.LockOptions;
13-
import org.hibernate.engine.spi.LoadQueryInfluencers;
1412
import org.hibernate.query.ResultListTransformer;
1513
import org.hibernate.query.TupleTransformer;
1614
import org.hibernate.query.spi.QueryInterpretationCache;
17-
import org.hibernate.query.spi.QueryOptions;
18-
import org.hibernate.query.sqm.tree.SqmStatement;
15+
import org.hibernate.query.sqm.spi.InterpretationsKeySource;
1916

2017

2118
/**
2219
* @author Steve Ebersole
2320
*/
24-
final class SqmInterpretationsKey implements QueryInterpretationCache.Key {
25-
public interface CacheabilityInfluencers {
26-
boolean isQueryPlanCacheable();
27-
String getQueryString();
28-
Object getQueryStringCacheKey();
29-
SqmStatement<?> getSqmStatement();
30-
QueryOptions getQueryOptions();
31-
LoadQueryInfluencers getLoadQueryInfluencers();
32-
BooleanSupplier hasMultiValuedParameterBindingsChecker();
33-
}
34-
35-
public interface InterpretationsKeySource extends CacheabilityInfluencers {
36-
Class<?> getResultType();
37-
}
21+
public final class SqmInterpretationsKey implements QueryInterpretationCache.Key {
3822

3923
public static SqmInterpretationsKey createInterpretationsKey(InterpretationsKeySource keySource) {
4024
if ( isCacheable ( keySource ) ) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
import org.hibernate.query.spi.SelectQueryPlan;
5353
import org.hibernate.query.sqm.SqmQuerySource;
5454
import org.hibernate.query.sqm.SqmSelectionQuery;
55-
import org.hibernate.query.sqm.internal.SqmInterpretationsKey.InterpretationsKeySource;
55+
import org.hibernate.query.sqm.spi.InterpretationsKeySource;
5656
import org.hibernate.query.sqm.spi.SqmSelectionQueryImplementor;
5757
import org.hibernate.query.sqm.tree.SqmCopyContext;
5858
import org.hibernate.query.sqm.tree.expression.SqmJpaCriteriaParameterWrapper;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.query.sqm.spi;
6+
7+
import org.hibernate.engine.spi.LoadQueryInfluencers;
8+
import org.hibernate.query.spi.QueryOptions;
9+
import org.hibernate.query.sqm.tree.SqmStatement;
10+
11+
import java.util.function.BooleanSupplier;
12+
13+
// Used by Hibernate Reactive
14+
public interface CacheabilityInfluencers {
15+
boolean isQueryPlanCacheable();
16+
17+
String getQueryString();
18+
19+
Object getQueryStringCacheKey();
20+
21+
SqmStatement<?> getSqmStatement();
22+
23+
QueryOptions getQueryOptions();
24+
25+
LoadQueryInfluencers getLoadQueryInfluencers();
26+
27+
BooleanSupplier hasMultiValuedParameterBindingsChecker();
28+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.query.sqm.spi;
6+
7+
// Used by Hibernate Reactive
8+
public interface InterpretationsKeySource extends CacheabilityInfluencers {
9+
Class<?> getResultType();
10+
}

0 commit comments

Comments
 (0)