HHH-13496 Keyset iteration optimisations on Session opening properties

This commit is contained in:
Sanne Grinovero 2019-07-05 19:23:38 +01:00
parent 9c19bbd611
commit 3d69df1ebf
1 changed files with 8 additions and 6 deletions

View File

@ -609,10 +609,10 @@ public final class SessionFactoryImpl implements SessionFactoryImplementor {
@Override @Override
public Session createEntityManager() { public Session createEntityManager() {
validateNotClosed(); validateNotClosed();
return buildEntityManager( SynchronizationType.SYNCHRONIZED, Collections.emptyMap() ); return buildEntityManager( SynchronizationType.SYNCHRONIZED, null );
} }
private Session buildEntityManager(SynchronizationType synchronizationType, Map map) { private <K,V> Session buildEntityManager(final SynchronizationType synchronizationType, final Map<K,V> map) {
assert !isClosed; assert !isClosed;
SessionBuilderImplementor builder = withOptions(); SessionBuilderImplementor builder = withOptions();
@ -625,11 +625,13 @@ public final class SessionFactoryImpl implements SessionFactoryImplementor {
final Session session = builder.openSession(); final Session session = builder.openSession();
if ( map != null ) { if ( map != null ) {
map.keySet().forEach( key -> { for ( Map.Entry<K, V> o : map.entrySet() ) {
final K key = o.getKey();
if ( key instanceof String ) { if ( key instanceof String ) {
session.setProperty( (String) key, map.get( key ) ); final String sKey = (String) key;
session.setProperty( sKey, o.getValue() );
}
} }
} );
} }
return session; return session;
} }
@ -644,7 +646,7 @@ public final class SessionFactoryImpl implements SessionFactoryImplementor {
public Session createEntityManager(SynchronizationType synchronizationType) { public Session createEntityManager(SynchronizationType synchronizationType) {
validateNotClosed(); validateNotClosed();
errorIfResourceLocalDueToExplicitSynchronizationType(); errorIfResourceLocalDueToExplicitSynchronizationType();
return buildEntityManager( synchronizationType, Collections.emptyMap() ); return buildEntityManager( synchronizationType, null );
} }
private void errorIfResourceLocalDueToExplicitSynchronizationType() { private void errorIfResourceLocalDueToExplicitSynchronizationType() {