13.5.5. カスタムサービス
13.5.5.1. カスタムサービスについて リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
org.hibernate.service.ServiceRegistry を構築すると、不変とみなされます。このサービス自体は再設定を受け入れる可能性がありますが、ここでの不変性はサービスの追加/置き換えを意味します。そのため、org.hibernate.service.ServiceRegistryBuilder で利用できる別のロールは、これから生成される org.hibernate.service.ServiceRegistry に含まれるサービスの調整を許可することです。
カスタムサービスについて
org.hibernate.service.ServiceRegistryBuilder に指示する方法は 2 つあります。
org.hibernate.service.spi.BasicServiceInitiatorクラスを実装し、サービスクラスのオンデマンド構築を制御し、addInitiatorメソッドを使用してorg.hibernate.service.ServiceRegistryBuilderに追加します。- サービスクラスをインスタンス化し、それを介して
org.hibernate.service.ServiceRegistryBuilderに追加するだけです。addService方法。
サービスの追加アプローチまたはイニシエーターの追加アプローチのいずれかが、レジストリーの拡張 (新しいサービ出力ルの追加) およびサービスのオーバーライド (サービス実装の置き換え) に有効です。
例13.22 ServiceRegistryBuilder を使用して、既存のサービスをカスタムサービスに置き換える
ServiceRegistryBuilder registryBuilder = new ServiceRegistryBuilder( bootstrapServiceRegistry );
registryBuilder.addService( JdbcServices.class, new FakeJdbcService() );
ServiceRegistry serviceRegistry = registryBuilder.buildServiceRegistry();
public class FakeJdbcService 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;
}
}