/*
* Hibernate OGM, Domain model persistence for NoSQL datastores
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.ogm.boot;
import java.util.Map;
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.SessionFactoryBuilder;
import org.hibernate.cache.spi.QueryCacheFactory;
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.ogm.OgmSessionFactory;
import org.hibernate.proxy.EntityNotFoundDelegate;
import org.hibernate.tuple.entity.EntityTuplizer;
import org.hibernate.tuple.entity.EntityTuplizerFactory;
/**
* A {@link SessionFactoryBuilder} which creates {@link OgmSessionFactory} instances.
*
* @author Gunnar Morling
*/
public interface OgmSessionFactoryBuilder extends SessionFactoryBuilder {
@Override
OgmSessionFactoryBuilder applyValidatorFactory(Object validatorFactory);
@Override
OgmSessionFactoryBuilder applyBeanManager(Object beanManager);
@Override
OgmSessionFactoryBuilder applyName(String sessionFactoryName);
@Override
OgmSessionFactoryBuilder applyNameAsJndiName(boolean isJndiName);
@Override
OgmSessionFactoryBuilder applyAutoClosing(boolean enabled);
@Override
OgmSessionFactoryBuilder applyAutoFlushing(boolean enabled);
@Override
OgmSessionFactoryBuilder applyStatisticsSupport(boolean enabled);
@Override
OgmSessionFactoryBuilder applyInterceptor(Interceptor interceptor);
@Override
OgmSessionFactoryBuilder addSessionFactoryObservers(SessionFactoryObserver... observers);
@Override
OgmSessionFactoryBuilder applyCustomEntityDirtinessStrategy(CustomEntityDirtinessStrategy strategy);
@Override
OgmSessionFactoryBuilder addEntityNameResolver(EntityNameResolver... entityNameResolvers);
@Override
OgmSessionFactoryBuilder applyEntityNotFoundDelegate(EntityNotFoundDelegate entityNotFoundDelegate);
@Override
OgmSessionFactoryBuilder applyIdentifierRollbackSupport(boolean enabled);
@Override
@Deprecated
OgmSessionFactoryBuilder applyDefaultEntityMode(EntityMode entityMode);
@Override
OgmSessionFactoryBuilder applyNullabilityChecking(boolean enabled);
@Override
OgmSessionFactoryBuilder applyLazyInitializationOutsideTransaction(boolean enabled);
@Override
OgmSessionFactoryBuilder applyEntityTuplizerFactory(EntityTuplizerFactory entityTuplizerFactory);
@Override
OgmSessionFactoryBuilder applyEntityTuplizer(
EntityMode entityMode,
Class<? extends EntityTuplizer> tuplizerClass);
@Override
OgmSessionFactoryBuilder applyMultiTableBulkIdStrategy(MultiTableBulkIdStrategy strategy);
@Override
OgmSessionFactoryBuilder applyBatchFetchStyle(BatchFetchStyle style);
@Override
OgmSessionFactoryBuilder applyDefaultBatchFetchSize(int size);
@Override
OgmSessionFactoryBuilder applyMaximumFetchDepth(int depth);
@Override
OgmSessionFactoryBuilder applyDefaultNullPrecedence(NullPrecedence nullPrecedence);
@Override
OgmSessionFactoryBuilder applyOrderingOfInserts(boolean enabled);
@Override
OgmSessionFactoryBuilder applyOrderingOfUpdates(boolean enabled);
@Override
OgmSessionFactoryBuilder applyMultiTenancyStrategy(MultiTenancyStrategy strategy);
@Override
OgmSessionFactoryBuilder applyCurrentTenantIdentifierResolver(CurrentTenantIdentifierResolver resolver);
@Override
@Deprecated
OgmSessionFactoryBuilder applyJtaTrackingByThread(boolean enabled);
@Override
@Deprecated
OgmSessionFactoryBuilder applyQuerySubstitutions(Map substitutions);
@Override
OgmSessionFactoryBuilder applyStrictJpaQueryLanguageCompliance(boolean enabled);
@Override
OgmSessionFactoryBuilder applyNamedQueryCheckingOnStartup(boolean enabled);
@Override
OgmSessionFactoryBuilder applySecondLevelCacheSupport(boolean enabled);
@Override
OgmSessionFactoryBuilder applyQueryCacheSupport(boolean enabled);
@Override
OgmSessionFactoryBuilder applyQueryCacheFactory(QueryCacheFactory factory);
@Override
OgmSessionFactoryBuilder applyCacheRegionPrefix(String prefix);
@Override
OgmSessionFactoryBuilder applyMinimalPutsForCaching(boolean enabled);
@Override
OgmSessionFactoryBuilder applyStructuredCacheEntries(boolean enabled);
@Override
OgmSessionFactoryBuilder applyDirectReferenceCaching(boolean enabled);
@Override
OgmSessionFactoryBuilder applyAutomaticEvictionOfCollectionCaches(boolean enabled);
@Override
OgmSessionFactoryBuilder applyJdbcBatchSize(int size);
@Override
OgmSessionFactoryBuilder applyJdbcBatchingForVersionedEntities(boolean enabled);
@Override
OgmSessionFactoryBuilder applyScrollableResultsSupport(boolean enabled);
@Override
OgmSessionFactoryBuilder applyResultSetsWrapping(boolean enabled);
@Override
OgmSessionFactoryBuilder applyGetGeneratedKeysSupport(boolean enabled);
@Override
OgmSessionFactoryBuilder applyJdbcFetchSize(int size);
@Override
OgmSessionFactoryBuilder applyConnectionReleaseMode(ConnectionReleaseMode connectionReleaseMode);
@Override
OgmSessionFactoryBuilder applySqlComments(boolean enabled);
@Override
OgmSessionFactoryBuilder applySqlFunction(String registrationName, SQLFunction sqlFunction);
@Override
OgmSessionFactory build();
}