org.hibernate.engine.jdbc.internal.JdbcServicesImpl 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
Hibernate's core ORM functionality
/*
* 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.engine.jdbc.internal;
import java.util.Map;
import org.hibernate.MultiTenancyStrategy;
import org.hibernate.cfg.Environment;
import org.hibernate.dialect.Dialect;
import org.hibernate.engine.jdbc.LobCreationContext;
import org.hibernate.engine.jdbc.LobCreator;
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
import org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator;
import org.hibernate.engine.jdbc.env.spi.ExtractedDatabaseMetaData;
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.jdbc.spi.ResultSetWrapper;
import org.hibernate.engine.jdbc.spi.SqlExceptionHelper;
import org.hibernate.engine.jdbc.spi.SqlStatementLogger;
import org.hibernate.internal.util.config.ConfigurationHelper;
import org.hibernate.service.spi.Configurable;
import org.hibernate.service.spi.ServiceRegistryAwareService;
import org.hibernate.service.spi.ServiceRegistryImplementor;
/**
* Standard implementation of the {@link JdbcServices} contract
*
* @author Steve Ebersole
*/
public class JdbcServicesImpl implements JdbcServices, ServiceRegistryAwareService, Configurable {
private ServiceRegistryImplementor serviceRegistry;
private JdbcEnvironment jdbcEnvironment;
private MultiTenancyStrategy multiTenancyStrategy;
private SqlStatementLogger sqlStatementLogger;
private ResultSetWrapperImpl resultSetWrapper;
@Override
public void injectServices(ServiceRegistryImplementor serviceRegistry) {
this.serviceRegistry = serviceRegistry;
}
@Override
public void configure(Map configValues) {
this.jdbcEnvironment = serviceRegistry.getService( JdbcEnvironment.class );
assert jdbcEnvironment != null : "JdbcEnvironment was not found!";
this.multiTenancyStrategy = MultiTenancyStrategy.determineMultiTenancyStrategy( configValues );
final boolean showSQL = ConfigurationHelper.getBoolean( Environment.SHOW_SQL, configValues, false );
final boolean formatSQL = ConfigurationHelper.getBoolean( Environment.FORMAT_SQL, configValues, false );
this.sqlStatementLogger = new SqlStatementLogger( showSQL, formatSQL );
resultSetWrapper = new ResultSetWrapperImpl( serviceRegistry );
}
@Override
public JdbcEnvironment getJdbcEnvironment() {
return jdbcEnvironment;
}
@Override
public JdbcConnectionAccess getBootstrapJdbcConnectionAccess() {
return JdbcEnvironmentInitiator.buildBootstrapJdbcConnectionAccess( multiTenancyStrategy, serviceRegistry );
}
@Override
public Dialect getDialect() {
if ( jdbcEnvironment != null ) {
return jdbcEnvironment.getDialect();
}
return null;
}
@Override
public SqlStatementLogger getSqlStatementLogger() {
return sqlStatementLogger;
}
@Override
public SqlExceptionHelper getSqlExceptionHelper() {
if ( jdbcEnvironment != null ) {
return jdbcEnvironment.getSqlExceptionHelper();
}
return null;
}
@Override
public ExtractedDatabaseMetaData getExtractedMetaDataSupport() {
if ( jdbcEnvironment != null ) {
return jdbcEnvironment.getExtractedDatabaseMetaData();
}
return null;
}
@Override
public LobCreator getLobCreator(LobCreationContext lobCreationContext) {
if ( jdbcEnvironment != null ) {
return jdbcEnvironment.getLobCreatorBuilder().buildLobCreator( lobCreationContext );
}
return null;
}
@Override
public ResultSetWrapper getResultSetWrapper() {
return resultSetWrapper;
}
}