5.3.2. 自定义服务
5.3.2.1. 关于自定义服务 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
旦创建了 org.hibernate.service.ServiceRegistry,则该服务本身可能会接受重新配置,但此处的不可变性意味着添加或替换服务。因此 org.hibernate.service.ServiceRegistryBuilder 提供的另一个角色是允许对从中生成的 org.hibernate.service.ServiceRegistry 中包含的服务进行调整。
有两种方法可以告知 org.hibernate.service.ServiceRegistryBuilder 相关信息。
-
实施
org.hibernate.service.spi.BasicServiceInitiator类,以控制服务类按需构建,并使用其addInitiator方法将它添加到org.hibernate.service.ServiceRegistryBuilder中。 -
只需实例化服务类,并使用其
addService 方法将它添加到中。org.hibernate.service.ServiceRegistryBuilder
这两种方法都可用于扩展注册表,例如添加新的服务角色和覆盖服务,如替换服务实施。
示例:使用 ServiceRegistryBuilder 将现有服务替换为自定义服务
ServiceRegistryBuilder registryBuilder =
new ServiceRegistryBuilder(bootstrapServiceRegistry);
registryBuilder.addService(JdbcServices.class, new MyCustomJdbcService());
ServiceRegistry serviceRegistry = registryBuilder.buildServiceRegistry();
public class MyCustomJdbcService implements JdbcServices{
@Override
public ConnectionProvider getConnectionProvider() {
return null;
}
@Override
public Dialect getDialect() {
return null;
}
@Override
public SqlStatementLogger getSqlStatementLogger() {
return null;
}
@Override
public SqlExceptionHelper getSqlExceptionHelper() {
return null;
}
@Override
public ExtractedDatabaseMetaData getExtractedMetaDataSupport() {
return null;
}
@Override
public LobCreator getLobCreator(LobCreationContext lobCreationContext) {
return null;
}
@Override
public ResultSetWrapper getResultSetWrapper() {
return null;
}
}