Skip to content

Commit 5b205d5

Browse files
committed
refactor out a single buildStructuredCacheEntry() helper method
1 parent 4b2a5ae commit 5b205d5

File tree

4 files changed

+22
-28
lines changed

4 files changed

+22
-28
lines changed

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

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.hibernate.persister.entity.EntityPersister;
2323
import org.hibernate.stat.internal.StatsHelper;
2424

25+
import static org.hibernate.cache.spi.entry.CacheEntryHelper.buildStructuredCacheEntry;
26+
2527
/**
2628
* The action for performing an entity insertion, for entities not defined to use {@code IDENTITY} generation.
2729
*
@@ -163,7 +165,7 @@ protected void putCacheIfNecessary() {
163165
final var session = getSession();
164166
if ( isCachePutEnabled( persister, session ) ) {
165167
final var factory = session.getFactory();
166-
cacheEntry = buildStructuredCacheEntry();
168+
cacheEntry = buildStructuredCacheEntry( getInstance(), version, getState(), persister, session );
167169
final var cache = persister.getCacheAccessStrategy();
168170
final Object cacheKey = cache.generateCacheKey( getId(), persister, factory, session.getTenantIdentifier() );
169171
final boolean put = cacheInsert( persister, cacheKey );
@@ -178,12 +180,6 @@ protected void putCacheIfNecessary() {
178180
}
179181
}
180182

181-
private Object buildStructuredCacheEntry() {
182-
final var persister = getPersister();
183-
final var cacheEntry = persister.buildCacheEntry( getInstance(), getState(), version, getSession() );
184-
return persister.getCacheEntryStructure().structure( cacheEntry );
185-
}
186-
187183
protected boolean cacheInsert(EntityPersister persister, Object cacheKey) {
188184
final var session = getSession();
189185
final var eventMonitor = session.getEventMonitor();

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

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.hibernate.stat.internal.StatsHelper;
2828
import org.hibernate.type.TypeHelper;
2929

30+
import static org.hibernate.cache.spi.entry.CacheEntryHelper.buildStructuredCacheEntry;
3031
import static org.hibernate.engine.internal.Versioning.getVersion;
3132

3233
/**
@@ -224,7 +225,7 @@ protected void updateCacheItem(Object previousVersion, Object cacheKey, EntityEn
224225
}
225226
else if ( session.getCacheMode().isPutEnabled() ) {
226227
//TODO: inefficient if that cache is just going to ignore the updated state!
227-
cacheEntry = buildStructuredCacheEntry();
228+
cacheEntry = buildStructuredCacheEntry( getInstance(), nextVersion, state, persister, session );
228229
final boolean put = updateCache( persister, previousVersion, cacheKey );
229230

230231
final var statistics = session.getFactory().getStatistics();
@@ -238,12 +239,6 @@ else if ( session.getCacheMode().isPutEnabled() ) {
238239
}
239240
}
240241

241-
private Object buildStructuredCacheEntry() {
242-
final var persister = getPersister();
243-
final var cacheEntry = persister.buildCacheEntry( getInstance(), state, nextVersion, getSession() );
244-
return persister.getCacheEntryStructure().structure( cacheEntry );
245-
}
246-
247242
private static boolean isCacheInvalidationRequired(
248243
EntityPersister persister,
249244
SharedSessionContractImplementor session) {
@@ -471,7 +466,6 @@ protected void cacheAfterUpdate(EntityDataAccess cache, Object cacheKey, SharedS
471466
}
472467
eventListenerManager.cachePutEnd();
473468
}
474-
475469
}
476470

477471
}

hibernate-core/src/main/java/org/hibernate/cache/spi/entry/CacheEntryHelper.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,18 @@
66

77
import java.io.Serializable;
88

9+
import org.hibernate.Internal;
910
import org.hibernate.bytecode.enhance.spi.LazyPropertyInitializer;
1011
import org.hibernate.engine.spi.SharedSessionContractImplementor;
12+
import org.hibernate.persister.entity.EntityPersister;
1113
import org.hibernate.property.access.internal.PropertyAccessStrategyBackRefImpl;
1214
import org.hibernate.type.Type;
1315

1416
/**
1517
* Operations for assembly and disassembly of an array of property values.
1618
*/
17-
class CacheEntryHelper {
19+
@Internal
20+
public class CacheEntryHelper {
1821

1922
/**
2023
* Apply the {@link Type#disassemble} operation across a series of values.
@@ -27,7 +30,7 @@ class CacheEntryHelper {
2730
*
2831
* @return The disassembled state
2932
*/
30-
public static Serializable[] disassemble(
33+
static Serializable[] disassemble(
3134
final Object[] row,
3235
final Type[] types,
3336
final boolean[] nonCacheable,
@@ -57,7 +60,7 @@ else if ( isPlaceholder( row[i] ) ) {
5760
* @param owner The entity "owning" the values
5861
* @return The assembled state
5962
*/
60-
public static Object[] assemble(
63+
static Object[] assemble(
6164
final Serializable[] row,
6265
final Type[] types,
6366
final SharedSessionContractImplementor session,
@@ -79,4 +82,13 @@ private static boolean isPlaceholder(Object value) {
7982
|| value == PropertyAccessStrategyBackRefImpl.UNKNOWN;
8083
}
8184

85+
public static Object buildStructuredCacheEntry(
86+
Object entity,
87+
Object version,
88+
Object[] state,
89+
EntityPersister persister,
90+
SharedSessionContractImplementor session) {
91+
return persister.getCacheEntryStructure()
92+
.structure( persister.buildCacheEntry( entity, state, version, session ) );
93+
}
8294
}

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import org.hibernate.persister.entity.EntityPersister;
1616
import org.hibernate.stat.internal.StatsHelper;
1717

18+
import static org.hibernate.cache.spi.entry.CacheEntryHelper.buildStructuredCacheEntry;
19+
1820
public final class OptimisticLockHelper {
1921

2022
private OptimisticLockHelper() {
@@ -91,16 +93,6 @@ else if ( session.getCacheMode().isPutEnabled() ) {
9193
return null;
9294
}
9395

94-
private static Object buildStructuredCacheEntry(
95-
Object entity,
96-
Object nextVersion,
97-
Object[] state,
98-
EntityPersister persister,
99-
SharedSessionContractImplementor session) {
100-
final var cacheEntry = persister.buildCacheEntry( entity, state, nextVersion, session );
101-
return persister.getCacheEntryStructure().structure( cacheEntry );
102-
}
103-
10496
private static boolean updateCache(
10597
EntityPersister persister,
10698
Object cacheEntry,

0 commit comments

Comments
 (0)