diff --git a/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java b/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java index ca2da2c541..0e878e8f79 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/AbstractSharedSessionContract.java @@ -37,7 +37,6 @@ import org.hibernate.boot.registry.classloading.spi.ClassLoaderService; import org.hibernate.boot.registry.classloading.spi.ClassLoadingException; import org.hibernate.cache.spi.CacheTransactionSynchronization; -import org.hibernate.cfg.Environment; import org.hibernate.dialect.Dialect; import org.hibernate.engine.ResultSetMappingDefinition; import org.hibernate.engine.internal.SessionEventListenerManagerImpl; @@ -143,7 +142,6 @@ public abstract class AbstractSharedSessionContract implements SharedSessionCont // transient & non-final for Serialization purposes - ugh private transient SessionEventListenerManagerImpl sessionEventsManager = new SessionEventListenerManagerImpl(); private transient EntityNameResolver entityNameResolver; - private transient Boolean useStreamForLobBinding; private Integer jdbcBatchSize; @@ -537,11 +535,7 @@ public EntityKey generateEntityKey(Serializable id, EntityPersister persister) { @Override public boolean useStreamForLobBinding() { - if ( useStreamForLobBinding == null ) { - useStreamForLobBinding = Environment.useStreamsForBinary() - || getJdbcServices().getJdbcEnvironment().getDialect().useInputStreamToInsertBlob(); - } - return useStreamForLobBinding; + return fastSessionServices.useStreamForLobBinding; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/internal/FastSessionServices.java b/hibernate-core/src/main/java/org/hibernate/internal/FastSessionServices.java index 4e2139a9bd..2fa489166a 100644 --- a/hibernate-core/src/main/java/org/hibernate/internal/FastSessionServices.java +++ b/hibernate-core/src/main/java/org/hibernate/internal/FastSessionServices.java @@ -6,6 +6,8 @@ */ package org.hibernate.internal; +import org.hibernate.cfg.Environment; +import org.hibernate.engine.jdbc.spi.JdbcServices; import org.hibernate.event.service.spi.EventListenerRegistry; import org.hibernate.event.spi.AutoFlushEventListener; import org.hibernate.event.spi.ClearEventListener; @@ -72,10 +74,12 @@ final class FastSessionServices { //Intentionally Package private: final boolean disallowOutOfTransactionUpdateOperations; + final boolean useStreamForLobBinding; FastSessionServices(SessionFactoryImpl sf) { Objects.requireNonNull( sf ); final ServiceRegistryImplementor sr = sf.getServiceRegistry(); + final JdbcServices jdbcServices = sf.getJdbcServices(); // Pre-compute all iterators on Event listeners: final EventListenerRegistry eventListenerRegistry = sr.getService( EventListenerRegistry.class ); @@ -100,6 +104,8 @@ final class FastSessionServices { //Other highly useful constants: this.disallowOutOfTransactionUpdateOperations = !sf.getSessionFactoryOptions().isAllowOutOfTransactionUpdateOperations(); + this.useStreamForLobBinding = Environment.useStreamsForBinary() + || jdbcServices.getJdbcEnvironment().getDialect().useInputStreamToInsertBlob(); } Iterable getClearEventListeners() {