Skip to content

Commit 1c00a6c

Browse files
committed
[#1744] Upgrade Hibernate ORM to 6.2.8.Final
1 parent 2fea5e7 commit 1c00a6c

24 files changed

+74
-411
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ version = projectVersion
5353
// ./gradlew clean build -PhibernateOrmVersion=5.6.15-SNAPSHOT
5454
ext {
5555
if ( !project.hasProperty('hibernateOrmVersion') ) {
56-
hibernateOrmVersion = '6.2.7.Final'
56+
hibernateOrmVersion = '6.2.8.Final'
5757
}
5858
if ( !project.hasProperty( 'hibernateOrmGradlePluginVersion' ) ) {
5959
// Same as ORM as default

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/impl/ReactiveEntityRegularInsertAction.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,13 @@
1111
import org.hibernate.HibernateException;
1212
import org.hibernate.action.internal.AbstractEntityInsertAction;
1313
import org.hibernate.action.internal.EntityInsertAction;
14-
import org.hibernate.cache.spi.access.EntityDataAccess;
15-
import org.hibernate.cache.spi.entry.CacheEntry;
1614
import org.hibernate.engine.spi.EntityEntry;
1715
import org.hibernate.engine.spi.EntityKey;
1816
import org.hibernate.engine.spi.PersistenceContext;
19-
import org.hibernate.engine.spi.SessionFactoryImplementor;
2017
import org.hibernate.engine.spi.SharedSessionContractImplementor;
2118
import org.hibernate.event.spi.EventSource;
2219
import org.hibernate.persister.entity.EntityPersister;
2320
import org.hibernate.reactive.persister.entity.impl.ReactiveEntityPersister;
24-
import org.hibernate.stat.internal.StatsHelper;
2521
import org.hibernate.stat.spi.StatisticsImplementor;
2622

2723
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
@@ -104,28 +100,6 @@ public CompletionStage<Void> reactiveExecute() throws HibernateException {
104100
}
105101
}
106102

107-
//TODO: copy/paste from superclass (make it protected)
108-
private void putCacheIfNecessary() {
109-
final EntityPersister persister = getPersister();
110-
final SharedSessionContractImplementor session = getSession();
111-
if ( isCachePutEnabled( persister, session ) ) {
112-
final SessionFactoryImplementor factory = session.getFactory();
113-
final CacheEntry ce = persister.buildCacheEntry( getInstance(), getState(), getVersion(), session );
114-
setCacheEntry( persister.getCacheEntryStructure().structure( ce ) );
115-
final EntityDataAccess cache = persister.getCacheAccessStrategy();
116-
final Object ck = cache.generateCacheKey( getId(), persister, factory, session.getTenantIdentifier() );
117-
final boolean put = cacheInsert( persister, ck );
118-
119-
final StatisticsImplementor statistics = factory.getStatistics();
120-
if ( put && statistics.isStatisticsEnabled() ) {
121-
statistics.entityCachePut(
122-
StatsHelper.INSTANCE.getRootEntityRole( persister ),
123-
cache.getRegion().getName()
124-
);
125-
}
126-
}
127-
}
128-
129103
private CompletionStage<Void> processInsertGeneratedProperties(
130104
ReactiveEntityPersister persister,
131105
SharedSessionContractImplementor session,

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/impl/ReactiveEntityUpdateAction.java

Lines changed: 1 addition & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,15 @@
88
import java.util.concurrent.CompletionStage;
99

1010
import org.hibernate.AssertionFailure;
11-
import org.hibernate.CacheMode;
1211
import org.hibernate.HibernateException;
1312
import org.hibernate.action.internal.EntityUpdateAction;
14-
import org.hibernate.cache.spi.access.EntityDataAccess;
15-
import org.hibernate.cache.spi.entry.CacheEntry;
16-
import org.hibernate.engine.spi.CachedNaturalIdValueSource;
1713
import org.hibernate.engine.spi.EntityEntry;
1814
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1915
import org.hibernate.engine.spi.Status;
2016
import org.hibernate.event.spi.EventSource;
21-
import org.hibernate.metamodel.mapping.NaturalIdMapping;
2217
import org.hibernate.persister.entity.EntityPersister;
2318
import org.hibernate.reactive.engine.ReactiveExecutable;
2419
import org.hibernate.reactive.persister.entity.impl.ReactiveEntityPersister;
25-
import org.hibernate.stat.internal.StatsHelper;
2620
import org.hibernate.stat.spi.StatisticsImplementor;
2721
import org.hibernate.tuple.entity.EntityMetamodel;
2822
import org.hibernate.type.TypeHelper;
@@ -156,82 +150,13 @@ private void handleDeleted(EntityEntry entry, EntityPersister persister, Object
156150
}
157151
}
158152

159-
// TODO: copy/paste from superclass (make it protected)
160-
private void handleNaturalIdResolutions(EntityPersister persister, SharedSessionContractImplementor session, Object id) {
161-
NaturalIdMapping naturalIdMapping = getNaturalIdMapping();
162-
if ( naturalIdMapping != null ) {
163-
session.getPersistenceContextInternal().getNaturalIdResolutions().manageSharedResolution(
164-
id,
165-
naturalIdMapping.extractNaturalIdFromEntityState( getState() ),
166-
getPreviousNaturalIdValues(),
167-
persister,
168-
CachedNaturalIdValueSource.UPDATE
169-
);
170-
}
171-
}
172-
173-
// TODO: copy/paste from superclass (make it protected)
174-
private void updateCacheItem(Object previousVersion, Object ck, EntityEntry entry) {
175-
final EntityPersister persister = getPersister();
176-
if ( persister.canWriteToCache() ) {
177-
final SharedSessionContractImplementor session = getSession();
178-
if ( isCacheInvalidationRequired( persister, session ) || entry.getStatus() != Status.MANAGED ) {
179-
persister.getCacheAccessStrategy().remove( session, ck );
180-
}
181-
else if ( session.getCacheMode().isPutEnabled() ) {
182-
//TODO: inefficient if that cache is just going to ignore the updated state!
183-
final CacheEntry ce = persister.buildCacheEntry( getInstance(), getState(), getNextVersion(), getSession() );
184-
setCacheEntry( persister.getCacheEntryStructure().structure( ce ) );
185-
final boolean put = updateCache( persister, previousVersion, ck );
186-
187-
final StatisticsImplementor statistics = session.getFactory().getStatistics();
188-
if ( put && statistics.isStatisticsEnabled() ) {
189-
statistics.entityCachePut(
190-
StatsHelper.INSTANCE.getRootEntityRole(persister),
191-
getPersister().getCacheAccessStrategy().getRegion().getName()
192-
);
193-
}
194-
}
195-
}
196-
}
197-
198-
private static boolean isCacheInvalidationRequired(
199-
EntityPersister persister,
200-
SharedSessionContractImplementor session) {
201-
// the cache has to be invalidated when CacheMode is equal to GET or IGNORE
202-
return persister.isCacheInvalidationRequired()
203-
|| session.getCacheMode() == CacheMode.GET
204-
|| session.getCacheMode() == CacheMode.IGNORE;
205-
}
206-
207-
// TODO: copy/paste from superclass (make it protected)
208-
private Object lockCacheItem(Object previousVersion) {
209-
final EntityPersister persister = getPersister();
210-
if ( persister.canWriteToCache() ) {
211-
final SharedSessionContractImplementor session = getSession();
212-
final EntityDataAccess cache = persister.getCacheAccessStrategy();
213-
final Object ck = cache.generateCacheKey(
214-
getId(),
215-
persister,
216-
session.getFactory(),
217-
session.getTenantIdentifier()
218-
);
219-
setLock( cache.lockItem( session, ck, previousVersion ) );
220-
return ck;
221-
}
222-
else {
223-
return null;
224-
}
225-
}
226-
227153
private CompletionStage<Void> processGeneratedProperties(
228154
Object id,
229155
ReactiveEntityPersister persister,
230156
SharedSessionContractImplementor session,
231157
Object instance) {
232158
if ( persister.hasUpdateGeneratedProperties() ) {
233-
// this entity defines property generation, so process those generated
234-
// values...
159+
// this entity defines property generation, so process those generated values...
235160
if ( persister.isVersionPropertyGenerated() ) {
236161
throw new UnsupportedOperationException( "generated version attribute not supported in Hibernate Reactive" );
237162
// setNextVersion( Versioning.getVersion( getState(), persister ) );

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/jdbc/env/internal/ReactiveMutationExecutor.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import static org.hibernate.reactive.engine.jdbc.ResultsCheckerUtil.checkResults;
2828
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
2929
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER;
30-
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER_TRACE_ENABLED;
3130

3231
/**
3332
* @see org.hibernate.engine.jdbc.mutation.internal.AbstractMutationExecutor
@@ -95,7 +94,7 @@ default CompletionStage<Void> performReactiveNonBatchedMutation(
9594

9695
final TableMapping tableDetails = statementDetails.getMutatingTableDetails();
9796
if ( inclusionChecker != null && !inclusionChecker.include( tableDetails ) ) {
98-
if ( MODEL_MUTATION_LOGGER_TRACE_ENABLED ) {
97+
if ( MODEL_MUTATION_LOGGER.isTraceEnabled() ) {
9998
MODEL_MUTATION_LOGGER.tracef( "Skipping execution of secondary insert : %s", tableDetails.getTableName() );
10099
}
101100
return voidFuture();

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/jdbc/mutation/internal/ReactiveMutationExecutorPostInsert.java

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
*/
66
package org.hibernate.reactive.engine.jdbc.mutation.internal;
77

8-
import static org.hibernate.reactive.engine.jdbc.ResultsCheckerUtil.checkResults;
9-
import static org.hibernate.reactive.util.impl.CompletionStages.completedFuture;
10-
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER;
11-
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER_TRACE_ENABLED;
128
import java.util.concurrent.CompletionStage;
139
import java.util.concurrent.atomic.AtomicReference;
10+
1411
import org.hibernate.engine.jdbc.mutation.OperationResultChecker;
1512
import org.hibernate.engine.jdbc.mutation.ParameterUsage;
1613
import org.hibernate.engine.jdbc.mutation.TableInclusionChecker;
@@ -27,6 +24,10 @@
2724
import org.hibernate.sql.model.MutationOperationGroup;
2825
import org.hibernate.sql.model.ValuesAnalysis;
2926

27+
import static org.hibernate.reactive.engine.jdbc.ResultsCheckerUtil.checkResults;
28+
import static org.hibernate.reactive.util.impl.CompletionStages.completedFuture;
29+
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER;
30+
3031
public class ReactiveMutationExecutorPostInsert extends MutationExecutorPostInsert implements ReactiveMutationExecutor {
3132

3233
public ReactiveMutationExecutorPostInsert(
@@ -53,17 +54,22 @@ public CompletionStage<Object> executeReactive(Object modelReference, ValuesAnal
5354
return completedFuture(id);
5455
}
5556
AtomicReference<CompletionStage<Object>> res = new AtomicReference<>(completedFuture(id));
56-
secondaryTablesStatementGroup.forEachStatement((tableName, statementDetails) -> {
57-
res.set(res.get().thenCompose(i -> reactiveExecuteWithId(i, tableName, statementDetails, inclusionChecker, resultChecker, session)));
58-
});
57+
secondaryTablesStatementGroup
58+
.forEachStatement( (tableName, statementDetails) -> res
59+
.set( res.get().thenCompose( i -> reactiveExecuteWithId( i, tableName, statementDetails, inclusionChecker, resultChecker, session ) ) )
60+
);
5961
return res.get();
6062
});
6163
}
6264

6365
private Object logId(Object identifier) {
64-
if ( MODEL_MUTATION_LOGGER_TRACE_ENABLED ) {
66+
if ( MODEL_MUTATION_LOGGER.isTraceEnabled() ) {
6567
MODEL_MUTATION_LOGGER
66-
.tracef( "Post-insert generated value : `%s` (%s)", identifier, mutationTarget.getNavigableRole().getFullPath() );
68+
.tracef(
69+
"Post-insert generated value : `%s` (%s)",
70+
identifier,
71+
mutationTarget.getNavigableRole().getFullPath()
72+
);
6773
}
6874
return identifier;
6975
}
@@ -77,33 +83,30 @@ private CompletionStage<Object> reactiveExecuteWithId(
7783
SharedSessionContractImplementor session) {
7884

7985
if ( statementDetails == null ) {
80-
return completedFuture(id);
86+
return completedFuture( id );
8187
}
8288

8389
final EntityTableMapping tableDetails = (EntityTableMapping) statementDetails.getMutatingTableDetails();
8490
assert !tableDetails.isIdentifierTable();
8591

8692
if ( inclusionChecker != null && !inclusionChecker.include( tableDetails ) ) {
87-
if ( MODEL_MUTATION_LOGGER_TRACE_ENABLED ) {
88-
MODEL_MUTATION_LOGGER.tracef(
89-
"Skipping execution of secondary insert : %s",
90-
tableDetails.getTableName()
91-
);
93+
if ( MODEL_MUTATION_LOGGER.isTraceEnabled() ) {
94+
MODEL_MUTATION_LOGGER
95+
.tracef( "Skipping execution of secondary insert : %s", tableDetails.getTableName() );
9296
}
93-
return completedFuture(id);
97+
return completedFuture( id );
9498
}
9599

96100

97101
tableDetails.getKeyMapping().breakDownKeyJdbcValues(
98102
id,
99-
(jdbcValue, columnMapping) -> {
100-
valueBindings.bindValue(
101-
jdbcValue,
102-
tableName,
103-
columnMapping.getColumnName(),
104-
ParameterUsage.SET
105-
);
106-
},
103+
(jdbcValue, columnMapping) -> valueBindings
104+
.bindValue(
105+
jdbcValue,
106+
tableName,
107+
columnMapping.getColumnName(),
108+
ParameterUsage.SET
109+
),
107110
session
108111
);
109112

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/jdbc/mutation/internal/ReactiveMutationExecutorPostInsertSingleTable.java

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,22 @@
55
*/
66
package org.hibernate.reactive.engine.jdbc.mutation.internal;
77

8-
import java.util.List;
98
import java.util.concurrent.CompletionStage;
109

1110
import org.hibernate.engine.jdbc.mutation.OperationResultChecker;
1211
import org.hibernate.engine.jdbc.mutation.TableInclusionChecker;
1312
import org.hibernate.engine.jdbc.mutation.group.PreparedStatementDetails;
1413
import org.hibernate.engine.jdbc.mutation.internal.MutationExecutorPostInsertSingleTable;
1514
import org.hibernate.engine.spi.SharedSessionContractImplementor;
16-
import org.hibernate.jdbc.Expectation;
1715
import org.hibernate.persister.entity.mutation.EntityMutationTarget;
1816
import org.hibernate.reactive.engine.jdbc.env.internal.ReactiveMutationExecutor;
1917
import org.hibernate.reactive.id.insert.ReactiveInsertGeneratedIdentifierDelegate;
20-
import org.hibernate.sql.exec.spi.JdbcParameterBinder;
2118
import org.hibernate.sql.model.MutationOperationGroup;
22-
import org.hibernate.sql.model.MutationTarget;
2319
import org.hibernate.sql.model.PreparableMutationOperation;
24-
import org.hibernate.sql.model.TableMapping;
2520
import org.hibernate.sql.model.ValuesAnalysis;
26-
import org.hibernate.sql.model.jdbc.JdbcInsertMutation;
2721

2822
import static org.hibernate.engine.jdbc.mutation.internal.ModelMutationHelper.identityPreparation;
2923
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER;
30-
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER_TRACE_ENABLED;
31-
3224

3325
public class ReactiveMutationExecutorPostInsertSingleTable extends MutationExecutorPostInsertSingleTable
3426
implements ReactiveMutationExecutor {
@@ -43,19 +35,6 @@ public ReactiveMutationExecutorPostInsertSingleTable(MutationOperationGroup muta
4335
this.identityInsertStatementDetails = identityPreparation( operation, session );
4436
}
4537

46-
private static class ReactiveIdentityInsertMutation extends JdbcInsertMutation {
47-
48-
public ReactiveIdentityInsertMutation(
49-
TableMapping tableDetails,
50-
MutationTarget<?> mutationTarget,
51-
String sql,
52-
boolean callable,
53-
Expectation expectation,
54-
List<? extends JdbcParameterBinder> parameterBinders) {
55-
super( tableDetails, mutationTarget, sql, callable, expectation, parameterBinders );
56-
}
57-
}
58-
5938
@Override
6039
public CompletionStage<Object> executeReactive(
6140
Object modelReference,
@@ -74,7 +53,7 @@ public CompletionStage<Object> executeReactive(
7453
}
7554

7655
private Object logId(Object identifier) {
77-
if ( MODEL_MUTATION_LOGGER_TRACE_ENABLED ) {
56+
if ( MODEL_MUTATION_LOGGER.isTraceEnabled() ) {
7857
MODEL_MUTATION_LOGGER
7958
.tracef( "Post-insert generated value : `%s` (%s)", identifier, mutationTarget.getNavigableRole().getFullPath() );
8059
}

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/jdbc/mutation/internal/ReactiveMutationExecutorSingleBatched.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
*/
66
package org.hibernate.reactive.engine.jdbc.mutation.internal;
77

8-
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
9-
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER;
10-
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER_TRACE_ENABLED;
118
import java.util.concurrent.CompletionStage;
9+
1210
import org.hibernate.engine.jdbc.batch.spi.BatchKey;
1311
import org.hibernate.engine.jdbc.mutation.JdbcValueBindings;
1412
import org.hibernate.engine.jdbc.mutation.OperationResultChecker;
@@ -26,6 +24,9 @@
2624
import org.hibernate.sql.model.TableMapping;
2725
import org.hibernate.sql.model.ValuesAnalysis;
2826

27+
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
28+
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER;
29+
2930
public class ReactiveMutationExecutorSingleBatched extends MutationExecutorSingleBatched implements
3031
ReactiveMutationExecutor {
3132

@@ -53,7 +54,7 @@ public CompletionStage<Void> performReactiveBatchedOperations(
5354

5455
final TableMapping tableDetails = statementDetails.getMutatingTableDetails();
5556
if ( inclusionChecker != null && !inclusionChecker.include( tableDetails ) ) {
56-
if ( MODEL_MUTATION_LOGGER_TRACE_ENABLED ) {
57+
if ( MODEL_MUTATION_LOGGER.isTraceEnabled() ) {
5758
MODEL_MUTATION_LOGGER.tracef( "Skipping execution of secondary insert : %s", tableDetails.getTableName() );
5859
}
5960
return voidFuture();

hibernate-reactive-core/src/main/java/org/hibernate/reactive/engine/jdbc/mutation/internal/ReactiveMutationExecutorStandard.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@
2929
import static org.hibernate.reactive.util.impl.CompletionStages.failedFuture;
3030
import static org.hibernate.reactive.util.impl.CompletionStages.voidFuture;
3131
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER;
32-
import static org.hibernate.sql.model.ModelMutationLogging.MODEL_MUTATION_LOGGER_TRACE_ENABLED;
3332

3433
/**
3534
* @see org.hibernate.engine.jdbc.mutation.internal.MutationExecutorStandard
@@ -145,7 +144,7 @@ public CompletionStage<Void> performReactiveNonBatchedMutation(
145144

146145
final TableMapping tableDetails = statementDetails.getMutatingTableDetails();
147146
if ( inclusionChecker != null && !inclusionChecker.include( tableDetails ) ) {
148-
if ( MODEL_MUTATION_LOGGER_TRACE_ENABLED ) {
147+
if ( MODEL_MUTATION_LOGGER.isTraceEnabled() ) {
149148
MODEL_MUTATION_LOGGER
150149
.tracef( "Skipping execution of secondary insert : %s", tableDetails.getTableName() );
151150
}

0 commit comments

Comments
 (0)