Skip to content

Commit 9d9bb36

Browse files
committed
various minor cleanups around Actions
1 parent 22d0af5 commit 9d9bb36

13 files changed

+435
-481
lines changed

hibernate-core/src/main/java/org/hibernate/action/internal/CollectionAction.java

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import org.hibernate.action.spi.AfterTransactionCompletionProcess;
88
import org.hibernate.action.spi.BeforeTransactionCompletionProcess;
99
import org.hibernate.cache.CacheException;
10-
import org.hibernate.cache.spi.access.CollectionDataAccess;
1110
import org.hibernate.cache.spi.access.SoftLock;
1211
import org.hibernate.collection.spi.PersistentCollection;
1312
import org.hibernate.engine.spi.ComparableExecutable;
@@ -69,11 +68,11 @@ public void afterDeserialize(EventSource session) {
6968

7069
@Override
7170
public final void beforeExecutions() throws CacheException {
72-
// we need to obtain the lock before any actions are executed, since this may be an inverse="true"
71+
// We need to obtain the lock before any actions are executed, since this may be an inverse="true"
7372
// bidirectional association, and it is one of the earlier entity actions which actually updates
74-
// the database (this action is responsible for second-level cache invalidation only)
73+
// the database. This action is responsible for second-level cache invalidation only.
7574
if ( persister.hasCache() ) {
76-
final CollectionDataAccess cache = persister.getCacheAccessStrategy();
75+
final var cache = persister.getCacheAccessStrategy();
7776
final Object ck = cache.generateCacheKey(
7877
key,
7978
persister,
@@ -108,16 +107,9 @@ protected final CollectionPersister getPersister() {
108107
}
109108

110109
protected final Object getKey() {
111-
Object finalKey = key;
112-
if ( key instanceof DelayedPostInsertIdentifier ) {
113-
// need to look it up from the persistence-context
114-
finalKey = session.getPersistenceContextInternal().getEntry( collection.getOwner() ).getId();
115-
// if ( finalKey == key ) {
116-
// we may be screwed here since the collection action is about to execute
117-
// and we do not know the final owner key value
118-
// }
119-
}
120-
return finalKey;
110+
return key instanceof DelayedPostInsertIdentifier
111+
? session.getPersistenceContextInternal().getEntry( collection.getOwner() ).getId()
112+
: key;
121113
}
122114

123115
@Override
@@ -177,7 +169,7 @@ private CacheCleanupProcess(Object key, CollectionPersister persister, SoftLock
177169

178170
@Override
179171
public void doAfterTransactionCompletion(boolean success, SharedSessionContractImplementor session) {
180-
final CollectionDataAccess cache = persister.getCacheAccessStrategy();
172+
final var cache = persister.getCacheAccessStrategy();
181173
final Object ck = cache.generateCacheKey(
182174
key,
183175
persister,

hibernate-core/src/main/java/org/hibernate/action/internal/DelayedPostInsertIdentifier.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@ public DelayedPostInsertIdentifier() {
4545
}
4646

4747
@Override
48-
public boolean equals(Object o) {
49-
if ( this == o ) {
48+
public boolean equals(Object object) {
49+
if ( this == object ) {
5050
return true;
5151
}
52-
else if ( !(o instanceof DelayedPostInsertIdentifier that) ) {
52+
else if ( !(object instanceof DelayedPostInsertIdentifier that) ) {
5353
return false;
5454
}
5555
else {

hibernate-core/src/main/java/org/hibernate/action/internal/EntityDeleteAction.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,7 @@ public void execute() throws HibernateException {
106106

107107
final boolean veto = isInstanceLoaded() && preDelete();
108108

109-
final var naturalIdMapping = persister.getNaturalIdMapping();
110-
if ( naturalIdMapping != null ) {
111-
naturalIdValues = session.getPersistenceContextInternal().getNaturalIdResolutions()
112-
.removeLocalResolution(
113-
getId(),
114-
naturalIdMapping.extractNaturalIdFromEntityState( state ),
115-
persister
116-
);
117-
}
109+
handleNaturalIdResolutions( persister, session );
118110

119111
final Object ck = lockCacheItem();
120112

@@ -145,6 +137,18 @@ public void execute() throws HibernateException {
145137
}
146138
}
147139

140+
private void handleNaturalIdResolutions(EntityPersister persister, EventSource session) {
141+
final var naturalIdMapping = persister.getNaturalIdMapping();
142+
if ( naturalIdMapping != null ) {
143+
naturalIdValues = session.getPersistenceContextInternal().getNaturalIdResolutions()
144+
.removeLocalResolution(
145+
getId(),
146+
naturalIdMapping.extractNaturalIdFromEntityState( state ),
147+
persister
148+
);
149+
}
150+
}
151+
148152
protected Object getCurrentVersion() {
149153
final var persister = getPersister();
150154
return persister.isVersionPropertyGenerated()
@@ -176,7 +180,7 @@ protected void postDeleteLoaded(
176180
persistenceContext.removeEntityHolder( key );
177181
removeCacheItem( ck );
178182
persistenceContext.getNaturalIdResolutions()
179-
.removeSharedResolution( id, naturalIdValues, persister, true);
183+
.removeSharedResolution( id, naturalIdValues, persister, true );
180184
postDelete();
181185
}
182186

hibernate-core/src/main/java/org/hibernate/action/internal/EntityInsertAction.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ protected void putCacheIfNecessary() {
163163
final var session = getSession();
164164
if ( isCachePutEnabled( persister, session ) ) {
165165
final var factory = session.getFactory();
166-
final var ce = persister.buildCacheEntry( getInstance(), getState(), version, session );
167-
cacheEntry = persister.getCacheEntryStructure().structure( ce );
166+
final var cacheEntry = persister.buildCacheEntry( getInstance(), getState(), version, session );
167+
this.cacheEntry = persister.getCacheEntryStructure().structure( cacheEntry );
168168
final var cache = persister.getCacheAccessStrategy();
169169
final Object ck = cache.generateCacheKey( getId(), persister, factory, session.getTenantIdentifier() );
170170
final boolean put = cacheInsert( persister, ck );

hibernate-core/src/main/java/org/hibernate/action/internal/EntityUpdateAction.java

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.hibernate.cache.spi.access.SoftLock;
1313
import org.hibernate.engine.spi.CachedNaturalIdValueSource;
1414
import org.hibernate.engine.spi.EntityEntry;
15+
import org.hibernate.engine.spi.PersistenceContext;
1516
import org.hibernate.engine.spi.SharedSessionContractImplementor;
1617
import org.hibernate.engine.spi.Status;
1718
import org.hibernate.event.monitor.spi.EventMonitor;
@@ -82,13 +83,15 @@ public EntityUpdateAction(
8283
this.hasDirtyCollection = hasDirtyCollection;
8384
this.rowId = rowId;
8485

85-
this.naturalIdMapping = persister.getNaturalIdMapping();
86+
naturalIdMapping = persister.getNaturalIdMapping();
8687
if ( naturalIdMapping == null ) {
8788
previousNaturalIdValues = null;
8889
}
8990
else {
9091
previousNaturalIdValues =
91-
determinePreviousNaturalIdValues( persister, naturalIdMapping, id, previousState, session );
92+
previousState == null
93+
? session.getPersistenceContextInternal().getNaturalIdSnapshot( id, persister )
94+
: naturalIdMapping.extractNaturalIdFromEntityState( previousState );
9295
session.getPersistenceContextInternal().getNaturalIdResolutions().manageLocalResolution(
9396
id,
9497
naturalIdMapping.extractNaturalIdFromEntityState( state ),
@@ -98,17 +101,6 @@ public EntityUpdateAction(
98101
}
99102
}
100103

101-
private static Object determinePreviousNaturalIdValues(
102-
EntityPersister persister,
103-
NaturalIdMapping naturalIdMapping,
104-
Object id,
105-
Object[] previousState,
106-
SharedSessionContractImplementor session) {
107-
return previousState == null
108-
? session.getPersistenceContextInternal().getNaturalIdSnapshot( id, persister )
109-
: naturalIdMapping.extractNaturalIdFromEntityState( previousState );
110-
}
111-
112104
protected Object[] getState() {
113105
return state;
114106
}
@@ -178,14 +170,15 @@ public void execute() throws HibernateException {
178170
finally {
179171
eventMonitor.completeEntityUpdateEvent( event, id, persister.getEntityName(), success, session );
180172
}
181-
final var entry = session.getPersistenceContextInternal().getEntry( instance );
173+
final var persistenceContext = session.getPersistenceContextInternal();
174+
final var entry = persistenceContext.getEntry( instance );
182175
if ( entry == null ) {
183176
throw new AssertionFailure( "possible non thread safe access to session" );
184177
}
185178
handleGeneratedProperties( entry, generatedValues );
186179
handleDeleted( entry );
187180
updateCacheItem( previousVersion, ck, entry );
188-
handleNaturalIdResolutions( persister, session, id );
181+
handleNaturalIdResolutions( persister, persistenceContext, id );
189182
postUpdate();
190183

191184
final var statistics = session.getFactory().getStatistics();
@@ -195,9 +188,9 @@ public void execute() throws HibernateException {
195188
}
196189
}
197190

198-
protected void handleNaturalIdResolutions(EntityPersister persister, SharedSessionContractImplementor session, Object id) {
191+
protected void handleNaturalIdResolutions(EntityPersister persister, PersistenceContext context, Object id) {
199192
if ( naturalIdMapping != null ) {
200-
session.getPersistenceContextInternal().getNaturalIdResolutions().manageSharedResolution(
193+
context.getNaturalIdResolutions().manageSharedResolution(
201194
id,
202195
naturalIdMapping.extractNaturalIdFromEntityState( state ),
203196
previousNaturalIdValues,
@@ -216,8 +209,8 @@ protected void updateCacheItem(Object previousVersion, Object ck, EntityEntry en
216209
}
217210
else if ( session.getCacheMode().isPutEnabled() ) {
218211
//TODO: inefficient if that cache is just going to ignore the updated state!
219-
final var ce = persister.buildCacheEntry( getInstance(), state, nextVersion, getSession() );
220-
cacheEntry = persister.getCacheEntryStructure().structure( ce );
212+
final var cacheEntry = persister.buildCacheEntry( getInstance(), state, nextVersion, getSession() );
213+
this.cacheEntry = persister.getCacheEntryStructure().structure( cacheEntry );
221214
final boolean put = updateCache( persister, previousVersion, ck );
222215

223216
final var statistics = session.getFactory().getStatistics();
@@ -279,9 +272,9 @@ protected void handleDeleted(EntityEntry entry) {
279272
final boolean isImpliedOptimisticLocking = !entityMetamodel.isVersioned()
280273
&& entityMetamodel.getOptimisticLockStyle().isAllOrDirty();
281274
if ( isImpliedOptimisticLocking && entry.getLoadedState() != null ) {
282-
// The entity will be deleted and because we are going to create a delete statement
275+
// The entity will be deleted, and because we are going to create a delete statement
283276
// that uses all the state values in the where clause, the entry state needs to be
284-
// updated otherwise the statement execution will not delete any row (see HHH-15218).
277+
// updated. Otherwise, the statement execution will not delete any row (see HHH-15218).
285278
entry.postUpdate( getInstance(), state, nextVersion );
286279
}
287280
}

hibernate-core/src/main/java/org/hibernate/action/internal/UnresolvedEntityInsertActions.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ public Set<AbstractEntityInsertAction> resolveDependentActions(Object managedEnt
226226
infoString( entityEntry.getEntityName(), entityEntry.getId() )
227227
);
228228
}
229-
// dependentAction only depended on managedEntity..
229+
// dependentAction only depended on managedEntity
230230
dependenciesByAction.remove( dependentAction );
231231
resolvedActions.add( dependentAction );
232232
}
@@ -252,18 +252,18 @@ public void clear() {
252252

253253
@Override
254254
public String toString() {
255-
final var sb = new StringBuilder( getClass().getSimpleName() ).append( '[' );
255+
final var representation = new StringBuilder( getClass().getSimpleName() ).append( '[' );
256256
for ( var entry : dependenciesByAction.entrySet() ) {
257257
final AbstractEntityInsertAction insert = entry.getKey();
258258
final NonNullableTransientDependencies dependencies = entry.getValue();
259-
sb.append( "[insert=" )
259+
representation.append( "[insert=" )
260260
.append( insert )
261261
.append( " dependencies=[" )
262262
.append( dependencies.toLoggableString( insert.getSession() ) )
263263
.append( "]" );
264264
}
265-
sb.append( ']');
266-
return sb.toString();
265+
representation.append( ']');
266+
return representation.toString();
267267
}
268268

269269
/**

hibernate-core/src/main/java/org/hibernate/cache/internal/EnabledCaching.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,8 +348,8 @@ private void evictNaturalIdData(NavigableRole rootEntityRole, NaturalIdDataAcces
348348

349349
@Override
350350
public boolean containsCollection(String role, Object ownerIdentifier) {
351-
final CollectionPersister persister = getCollectionDescriptor( role );
352-
final CollectionDataAccess cacheAccess = persister.getCacheAccessStrategy();
351+
final var persister = getCollectionDescriptor( role );
352+
final var cacheAccess = persister.getCacheAccessStrategy();
353353
if ( cacheAccess != null ) {
354354
final Object cacheKey =
355355
cacheAccess.generateCacheKey( ownerIdentifier, persister, sessionFactory, null );

0 commit comments

Comments
 (0)