Skip to content

Commit d12396e

Browse files
Sannestliu
authored andcommitted
HHH-6862 Reuse cached entryArray of IdentityMap in StatefulPersistenceContext as much as possible
1 parent ad3afa4 commit d12396e

File tree

3 files changed

+5
-9
lines changed

3 files changed

+5
-9
lines changed

hibernate-core/src/main/java/org/hibernate/engine/internal/StatefulPersistenceContext.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,7 @@ && isFoundInParent( propertyName, childEntity, persister, collectionPersister, p
11621162

11631163
//not found in case, proceed
11641164
// iterate all the entities currently associated with the persistence context.
1165-
for ( Entry<Object,EntityEntry> me : IdentityMap.entriesIterable( entityEntries ) ) {
1165+
for ( Entry<Object,EntityEntry> me : IdentityMap.concurrentEntries( entityEntries ) ) {
11661166
final EntityEntry entityEntry = me.getValue();
11671167
// does this entity entry pertain to the entity persister in which we are interested (owner)?
11681168
if ( persister.isSubclassEntityName( entityEntry.getEntityName() ) ) {
@@ -1284,7 +1284,7 @@ public Object getIndexInOwner(String entity, String property, Object childEntity
12841284
}
12851285

12861286
//Not found in cache, proceed
1287-
for ( Entry<Object, EntityEntry> me : IdentityMap.entriesIterable( entityEntries ) ) {
1287+
for ( Entry<Object, EntityEntry> me : IdentityMap.concurrentEntries( entityEntries ) ) {
12881288
EntityEntry ee = me.getValue();
12891289
if ( persister.isSubclassEntityName( ee.getEntityName() ) ) {
12901290
Object instance = me.getKey();

hibernate-core/src/main/java/org/hibernate/event/internal/AbstractFlushingEventListener.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ private void prepareCollectionFlushes(PersistenceContext persistenceContext) thr
187187
LOG.debug( "Dirty checking collections" );
188188

189189
for ( Map.Entry<PersistentCollection,CollectionEntry> entry :
190-
IdentityMap.entriesIterable( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
190+
IdentityMap.concurrentEntries( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
191191
entry.getValue().preFlush( entry.getKey() );
192192
}
193193
}
@@ -246,7 +246,7 @@ private void flushCollections(final EventSource session, final PersistenceContex
246246
LOG.trace( "Processing unreferenced collections" );
247247

248248
for ( Map.Entry<PersistentCollection,CollectionEntry> me :
249-
IdentityMap.entriesIterable( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
249+
IdentityMap.concurrentEntries( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
250250
CollectionEntry ce = me.getValue();
251251
if ( !ce.isReached() && !ce.isIgnore() ) {
252252
Collections.processUnreachableCollection( me.getKey(), session );
@@ -259,7 +259,7 @@ private void flushCollections(final EventSource session, final PersistenceContex
259259

260260
ActionQueue actionQueue = session.getActionQueue();
261261
for ( Map.Entry<PersistentCollection,CollectionEntry> me :
262-
IdentityMap.entriesIterable( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
262+
IdentityMap.concurrentEntries( (Map<PersistentCollection,CollectionEntry>) persistenceContext.getCollectionEntries() )) {
263263
PersistentCollection coll = me.getKey();
264264
CollectionEntry ce = me.getValue();
265265

hibernate-core/src/main/java/org/hibernate/internal/util/collections/IdentityMap.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,6 @@ public static <K,V> Map.Entry<K,V>[] concurrentEntries(Map<K,V> map) {
9090
return ( (IdentityMap<K,V>) map ).entryArray();
9191
}
9292

93-
public static <K,V> Iterable<Map.Entry<K,V>> entriesIterable(Map<K,V> map) {
94-
return ( (IdentityMap<K,V>) map ).entryList();
95-
}
96-
9793
public static <K,V> Iterator<K> keyIterator(Map<K,V> map) {
9894
return ( (IdentityMap<K,V>) map ).keyIterator();
9995
}

0 commit comments

Comments
 (0)