org.hibernate.boot.internal.SessionFactoryOptionsImpl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hibernate-core Show documentation
Show all versions of hibernate-core Show documentation
The core O/RM functionality as provided by Hibernate
The newest version!
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or .
*/
package org.hibernate.boot.internal;
import java.util.Map;
import java.util.TimeZone;
import org.hibernate.ConnectionReleaseMode;
import org.hibernate.CustomEntityDirtinessStrategy;
import org.hibernate.EntityMode;
import org.hibernate.EntityNameResolver;
import org.hibernate.Interceptor;
import org.hibernate.MultiTenancyStrategy;
import org.hibernate.NullPrecedence;
import org.hibernate.SessionFactoryObserver;
import org.hibernate.boot.SchemaAutoTooling;
import org.hibernate.boot.TempTableDdlTransactionHandling;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.spi.SessionFactoryOptions;
import org.hibernate.cache.spi.QueryCacheFactory;
import org.hibernate.cfg.BaselineSessionEventsListenerBuilder;
import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
import org.hibernate.dialect.function.SQLFunction;
import org.hibernate.hql.spi.id.MultiTableBulkIdStrategy;
import org.hibernate.loader.BatchFetchStyle;
import org.hibernate.proxy.EntityNotFoundDelegate;
import org.hibernate.resource.jdbc.spi.PhysicalConnectionHandlingMode;
import org.hibernate.resource.jdbc.spi.StatementInspector;
import org.hibernate.tuple.entity.EntityTuplizerFactory;
/**
* Standard implementation of SessionFactoryOptions
*
* @author Steve Ebersole
*/
public class SessionFactoryOptionsImpl implements SessionFactoryOptions {
private final StandardServiceRegistry serviceRegistry;
// integration
private final Object beanManagerReference;
private final Object validatorFactoryReference;
// SessionFactory behavior
private boolean jpaBootstrap;
private final String sessionFactoryName;
private final boolean sessionFactoryNameAlsoJndiName;
// Session behavior
private final boolean flushBeforeCompletionEnabled;
private final boolean autoCloseSessionEnabled;
private boolean jtaTransactionAccessEnabled;
private boolean allowRefreshDetachedEntity;
private boolean allowOutOfTransactionUpdateOperations;
private boolean releaseResourcesOnCloseEnabled;
// transaction handling
private final boolean jtaTrackByThread;
private final boolean preferUserTransaction;
// Statistics/Interceptor/observers
private final boolean statisticsEnabled;
private final Interceptor interceptor;
private Class statelessInterceptorClass;
private final StatementInspector statementInspector;
private final SessionFactoryObserver[] sessionFactoryObserverList;
private final BaselineSessionEventsListenerBuilder baselineSessionEventsListenerBuilder; // not exposed on builder atm
// persistence behavior
private final CustomEntityDirtinessStrategy customEntityDirtinessStrategy;
private final EntityNameResolver[] entityNameResolvers;
private final EntityNotFoundDelegate entityNotFoundDelegate;
private final boolean identifierRollbackEnabled;
private final EntityMode defaultEntityMode;
private final EntityTuplizerFactory entityTuplizerFactory;
private boolean checkNullability;
private final boolean initializeLazyStateOutsideTransactions;
private final MultiTableBulkIdStrategy multiTableBulkIdStrategy;
private final TempTableDdlTransactionHandling tempTableDdlTransactionHandling;
private final BatchFetchStyle batchFetchStyle;
private final int defaultBatchFetchSize;
private final Integer maximumFetchDepth;
private final NullPrecedence defaultNullPrecedence;
private final boolean orderUpdatesEnabled;
private final boolean orderInsertsEnabled;
// multi-tenancy
private final MultiTenancyStrategy multiTenancyStrategy;
private final CurrentTenantIdentifierResolver currentTenantIdentifierResolver;
// Queries
private final Map querySubstitutions;
private final boolean strictJpaQueryLanguageCompliance;
private final boolean namedQueryStartupCheckingEnabled;
private final boolean conventionalJavaConstants;
private final boolean procedureParameterNullPassingEnabled;
private final boolean collectionJoinSubqueryRewriteEnabled;
// Caching
private final boolean secondLevelCacheEnabled;
private final boolean queryCacheEnabled;
private final QueryCacheFactory queryCacheFactory;
private final String cacheRegionPrefix;
private final boolean minimalPutsEnabled;
private final boolean structuredCacheEntriesEnabled;
private final boolean directReferenceCacheEntriesEnabled;
private final boolean autoEvictCollectionCache;
// Schema tooling
private final SchemaAutoTooling schemaAutoTooling;
// JDBC Handling
private final boolean getGeneratedKeysEnabled;
private final int jdbcBatchSize;
private final boolean jdbcBatchVersionedData;
private final Integer jdbcFetchSize;
private final boolean scrollableResultSetsEnabled;
private final boolean commentsEnabled;
private final PhysicalConnectionHandlingMode physicalConnectionHandlingMode;
private final boolean connectionProviderDisablesAutoCommit;
private final boolean wrapResultSetsEnabled;
private final TimeZone jdbcTimeZone;
private final Map sqlFunctions;
private boolean queryParametersValidationEnabled;
public SessionFactoryOptionsImpl(SessionFactoryOptionsState state) {
this.serviceRegistry = state.getServiceRegistry();
this.beanManagerReference = state.getBeanManagerReference();
this.validatorFactoryReference = state.getValidatorFactoryReference();
this.jpaBootstrap = state.isJpaBootstrap();
this.jtaTransactionAccessEnabled = state.isJtaTransactionAccessEnabled();
this.allowRefreshDetachedEntity = state.isAllowRefreshDetachedEntity();
this.allowOutOfTransactionUpdateOperations = state.isAllowOutOfTransactionUpdateOperations();
this.sessionFactoryName = state.getSessionFactoryName();
this.sessionFactoryNameAlsoJndiName = state.isSessionFactoryNameAlsoJndiName();
this.flushBeforeCompletionEnabled = state.isFlushBeforeCompletionEnabled();
this.autoCloseSessionEnabled = state.isAutoCloseSessionEnabled();
this.releaseResourcesOnCloseEnabled = state.isReleaseResourcesOnCloseEnabled();
this.jtaTrackByThread = state.isJtaTrackByThread();
this.preferUserTransaction = state.isPreferUserTransaction();
this.statisticsEnabled = state.isStatisticsEnabled();
this.interceptor = state.getInterceptor();
this.statelessInterceptorClass = state.getStatelessInterceptorImplementor();
this.statementInspector = state.getStatementInspector();
this.sessionFactoryObserverList = state.getSessionFactoryObservers();
this.baselineSessionEventsListenerBuilder = state.getBaselineSessionEventsListenerBuilder();
this.customEntityDirtinessStrategy = state.getCustomEntityDirtinessStrategy();
this.entityNameResolvers = state.getEntityNameResolvers();
this.entityNotFoundDelegate = state.getEntityNotFoundDelegate();
this.identifierRollbackEnabled = state.isIdentifierRollbackEnabled();
this.defaultEntityMode = state.getDefaultEntityMode();
this.entityTuplizerFactory = state.getEntityTuplizerFactory();
this.checkNullability = state.isCheckNullability();
this.initializeLazyStateOutsideTransactions = state.isInitializeLazyStateOutsideTransactionsEnabled();
this.multiTableBulkIdStrategy = state.getMultiTableBulkIdStrategy();
this.tempTableDdlTransactionHandling = state.getTempTableDdlTransactionHandling();
this.batchFetchStyle = state.getBatchFetchStyle();
this.defaultBatchFetchSize = state.getDefaultBatchFetchSize();
this.maximumFetchDepth = state.getMaximumFetchDepth();
this.defaultNullPrecedence = state.getDefaultNullPrecedence();
this.orderUpdatesEnabled = state.isOrderUpdatesEnabled();
this.orderInsertsEnabled = state.isOrderInsertsEnabled();
this.multiTenancyStrategy = state.getMultiTenancyStrategy();
this.currentTenantIdentifierResolver = state.getCurrentTenantIdentifierResolver();
this.querySubstitutions = state.getQuerySubstitutions();
this.strictJpaQueryLanguageCompliance = state.isStrictJpaQueryLanguageCompliance();
this.namedQueryStartupCheckingEnabled = state.isNamedQueryStartupCheckingEnabled();
this.conventionalJavaConstants = state.isConventionalJavaConstants();
this.procedureParameterNullPassingEnabled = state.isProcedureParameterNullPassingEnabled();
this.collectionJoinSubqueryRewriteEnabled = state.isCollectionJoinSubqueryRewriteEnabled();
this.secondLevelCacheEnabled = state.isSecondLevelCacheEnabled();
this.queryCacheEnabled = state.isQueryCacheEnabled();
this.queryCacheFactory = state.getQueryCacheFactory();
this.cacheRegionPrefix = state.getCacheRegionPrefix();
this.minimalPutsEnabled = state.isMinimalPutsEnabled();
this.structuredCacheEntriesEnabled = state.isStructuredCacheEntriesEnabled();
this.directReferenceCacheEntriesEnabled = state.isDirectReferenceCacheEntriesEnabled();
this.autoEvictCollectionCache = state.isAutoEvictCollectionCache();
this.schemaAutoTooling = state.getSchemaAutoTooling();
this.physicalConnectionHandlingMode = state.getPhysicalConnectionHandlingMode();
this.connectionProviderDisablesAutoCommit = state.connectionProviderDisablesAutoCommit();
this.getGeneratedKeysEnabled = state.isGetGeneratedKeysEnabled();
this.jdbcBatchSize = state.getJdbcBatchSize();
this.jdbcBatchVersionedData = state.isJdbcBatchVersionedData();
this.jdbcFetchSize = state.getJdbcFetchSize();
this.scrollableResultSetsEnabled = state.isScrollableResultSetsEnabled();
this.wrapResultSetsEnabled = state.isWrapResultSetsEnabled();
this.commentsEnabled = state.isCommentsEnabled();
this.sqlFunctions = state.getCustomSqlFunctionMap();
this.jdbcTimeZone = state.getJdbcTimeZone();
this.queryParametersValidationEnabled = state.isQueryParametersValidationEnabled();
}
@Override
public StandardServiceRegistry getServiceRegistry() {
return serviceRegistry;
}
@Override
public boolean isJpaBootstrap() {
return jpaBootstrap;
}
@Override
public boolean isJtaTransactionAccessEnabled() {
return jtaTransactionAccessEnabled;
}
@Override
public boolean isAllowRefreshDetachedEntity() {
return allowRefreshDetachedEntity;
}
@Override
public Object getBeanManagerReference() {
return beanManagerReference;
}
@Override
public Object getValidatorFactoryReference() {
return validatorFactoryReference;
}
@Override
public String getSessionFactoryName() {
return sessionFactoryName;
}
@Override
public boolean isSessionFactoryNameAlsoJndiName() {
return sessionFactoryNameAlsoJndiName;
}
@Override
public boolean isFlushBeforeCompletionEnabled() {
return flushBeforeCompletionEnabled;
}
@Override
public boolean isAutoCloseSessionEnabled() {
return autoCloseSessionEnabled;
}
@Override
public boolean isStatisticsEnabled() {
return statisticsEnabled;
}
@Override
public Interceptor getInterceptor() {
return interceptor;
}
@Override
public Class getStatelessInterceptorImplementor() {
return statelessInterceptorClass;
}
@Override
public StatementInspector getStatementInspector() {
return statementInspector;
}
@Override
public BaselineSessionEventsListenerBuilder getBaselineSessionEventsListenerBuilder() {
return baselineSessionEventsListenerBuilder;
}
@Override
public SessionFactoryObserver[] getSessionFactoryObservers() {
return sessionFactoryObserverList;
}
@Override
public boolean isIdentifierRollbackEnabled() {
return identifierRollbackEnabled;
}
@Override
public EntityMode getDefaultEntityMode() {
return defaultEntityMode;
}
public EntityTuplizerFactory getEntityTuplizerFactory() {
return entityTuplizerFactory;
}
@Override
public boolean isCheckNullability() {
return checkNullability;
}
@Override
public boolean isInitializeLazyStateOutsideTransactionsEnabled() {
return initializeLazyStateOutsideTransactions;
}
@Override
public MultiTableBulkIdStrategy getMultiTableBulkIdStrategy() {
return multiTableBulkIdStrategy;
}
@Override
public TempTableDdlTransactionHandling getTempTableDdlTransactionHandling() {
return tempTableDdlTransactionHandling;
}
@Override
public BatchFetchStyle getBatchFetchStyle() {
return batchFetchStyle;
}
@Override
public int getDefaultBatchFetchSize() {
return defaultBatchFetchSize;
}
@Override
public Integer getMaximumFetchDepth() {
return maximumFetchDepth;
}
@Override
public NullPrecedence getDefaultNullPrecedence() {
return defaultNullPrecedence;
}
@Override
public boolean isOrderUpdatesEnabled() {
return orderUpdatesEnabled;
}
@Override
public boolean isOrderInsertsEnabled() {
return orderInsertsEnabled;
}
@Override
public MultiTenancyStrategy getMultiTenancyStrategy() {
return multiTenancyStrategy;
}
@Override
public CurrentTenantIdentifierResolver getCurrentTenantIdentifierResolver() {
return currentTenantIdentifierResolver;
}
@Override
public boolean isJtaTrackByThread() {
return jtaTrackByThread;
}
@Override
public Map getQuerySubstitutions() {
return querySubstitutions;
}
@Override
public boolean isStrictJpaQueryLanguageCompliance() {
return strictJpaQueryLanguageCompliance;
}
@Override
public boolean isNamedQueryStartupCheckingEnabled() {
return namedQueryStartupCheckingEnabled;
}
@Override
public boolean isConventionalJavaConstants() {
return conventionalJavaConstants;
}
@Override
public boolean isProcedureParameterNullPassingEnabled() {
return procedureParameterNullPassingEnabled;
}
@Override
public boolean isCollectionJoinSubqueryRewriteEnabled() {
return collectionJoinSubqueryRewriteEnabled;
}
@Override
public boolean isAllowOutOfTransactionUpdateOperations() {
return allowOutOfTransactionUpdateOperations;
}
@Override
public boolean isReleaseResourcesOnCloseEnabled() {
return releaseResourcesOnCloseEnabled;
}
@Override
public boolean isSecondLevelCacheEnabled() {
return secondLevelCacheEnabled;
}
@Override
public boolean isQueryCacheEnabled() {
return queryCacheEnabled;
}
@Override
public QueryCacheFactory getQueryCacheFactory() {
return queryCacheFactory;
}
@Override
public String getCacheRegionPrefix() {
return cacheRegionPrefix;
}
@Override
public boolean isMinimalPutsEnabled() {
return minimalPutsEnabled;
}
@Override
public boolean isStructuredCacheEntriesEnabled() {
return structuredCacheEntriesEnabled;
}
@Override
public boolean isDirectReferenceCacheEntriesEnabled() {
return directReferenceCacheEntriesEnabled;
}
public boolean isAutoEvictCollectionCache() {
return autoEvictCollectionCache;
}
@Override
public SchemaAutoTooling getSchemaAutoTooling() {
return schemaAutoTooling;
}
@Override
public int getJdbcBatchSize() {
return jdbcBatchSize;
}
@Override
public boolean isJdbcBatchVersionedData() {
return jdbcBatchVersionedData;
}
@Override
public boolean isScrollableResultSetsEnabled() {
return scrollableResultSetsEnabled;
}
@Override
public boolean isWrapResultSetsEnabled() {
return wrapResultSetsEnabled;
}
@Override
public boolean isGetGeneratedKeysEnabled() {
return getGeneratedKeysEnabled;
}
@Override
public Integer getJdbcFetchSize() {
return jdbcFetchSize;
}
@Override
public PhysicalConnectionHandlingMode getPhysicalConnectionHandlingMode() {
return physicalConnectionHandlingMode;
}
@Override
public ConnectionReleaseMode getConnectionReleaseMode() {
return physicalConnectionHandlingMode.getReleaseMode();
}
@Override
public boolean doesConnectionProviderDisableAutoCommit() {
return connectionProviderDisablesAutoCommit;
}
@Override
public boolean isCommentsEnabled() {
return commentsEnabled;
}
@Override
public CustomEntityDirtinessStrategy getCustomEntityDirtinessStrategy() {
return customEntityDirtinessStrategy;
}
@Override
public EntityNameResolver[] getEntityNameResolvers() {
return entityNameResolvers;
}
@Override
public EntityNotFoundDelegate getEntityNotFoundDelegate() {
return entityNotFoundDelegate;
}
@Override
public Map getCustomSqlFunctionMap() {
return sqlFunctions;
}
@Override
public void setCheckNullability(boolean enabled) {
this.checkNullability = enabled;
}
@Override
public boolean isPreferUserTransaction() {
return preferUserTransaction;
}
@Override
public TimeZone getJdbcTimeZone() {
return jdbcTimeZone;
}
@Override
public boolean isQueryParametersValidationEnabled() {
return queryParametersValidationEnabled;
}
}