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; } }