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.Service RegistryBuilder 中。

这两种方法都可用于扩展注册表,例如添加新的服务角色和覆盖服务,如替换服务实施。

示例:使用 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;
   }
}
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat