13.5.6.3. BootstrapRegistry サービス
org.hibernate.service.classloading.spi.ClassLoaderService
Hibernate はクラスローダーと対話する必要があります。ただし、Hibernate または任意のライブラリーと対話する方法は、アプリケーションをホストしているランタイム環境によって異なります。アプリケーションサーバー、OSGi コンテナー、およびその他のモジュラークラスローディングシステムでは、非常に特殊なクラスローディング要件が課せられています。このサービスは、この環境的な複雑性からの抽象化を Hibernate に提供します。また、同様に重要な点として、単一スワップ可能なコンポーネントでこれを実行します。
クラスローダーとの対話では、Hibernate には以下の機能が必要になります。
- アプリケーションクラスを検索する機能
- インテグレーションクラスを検索する機能
- リソース (プロパティーファイル、xml ファイルなど) を見つける機能
java.util.ServiceLoader
をロードする機能
注記
現在、アプリケーションクラスをロードする機能と、統合クラスをロードする機能が、サービス上の単一の load class 機能に統合されています。これは、今後のリリースで変更される可能性があります。
org.hibernate.integrator.spi.IntegratorService
アプリケーション、アドオン、およびその他のモジュールは Hibernate と統合する必要があります。前述の方法では、各モジュールの登録を調整するために、通常アプリケーションなどのコンポーネントが必要でした。この登録は、各モジュールのインテグレーターに代わって実施されました。
このサービスは、検出機能に重点を置いています。これは、によって提供される標準の
Javajava.util.ServiceLoader
機能を活用します。 org.hibernate.service.classloading.spi.ClassLoaderService
の実装を発見するために org.hibernate.integrator.spi.Integrator
contract.
インテグレーターは、単に
/META-INF/services/org.hibernate.integrator.spi.Integrator
という名前のファイルを定義し、これをクラスパスで利用できるようにします。
このファイルは、
java.util.ServiceLoader
メカニズムによって使用されます。これは、1 行ずつ org.hibernate.integrator.spi.Integrator
インターフェースを実装するクラスの完全修飾名を一覧表示します。