3.8.2. JNDI にバインドされた SessionFactory
JNDI にバインドされた Hibernate
SessionFactory
はファクトリのルックアップと新しい Session
の作成を簡単にします。 JNDI にバインドされた Datasource
には関連していませんが、 両方とも同じレジストリを使用します。
SessionFactory
を JNDI 名前空間にバインドしたい場合は、 hibernate.session_factory_name
プロパティを使用して名前 (java:hibernate/SessionFactory
など) を指定します。 このプロパティを省略すると、 SessionFactory
は JNDI にバインドされません。 これは、 読み取り専用の JNDI のデフォルト実装を持つ環境 (Tomcat 内など) で特に便利です。
SessionFactory
を JNDI に登録するとき、 Hibernate は hibernate.jndi.url
の値を使用し、hibernate.jndi.class
をイニシャルコンテキストとして具体化します。何も設定しない場合は、デフォルトの InitialContext
を使用します。
cfg.buildSessionFactory()
を呼び出した後、 Hibernate は自動的に SessionFactory
を JNDI に配置します。 これは、 HibernateService
で JMX デプロイメントを使用しない限り、 この呼び出しがアプリケーションの起動コードかユーティリティクラスに存在することを意味します。
JNDI の
SessionFactory
や EJB、 他のクラスを使用する場合、 JNDI ルックアップを使用して SessionFactory
を取得することができます。
管理された環境では
SessionFactory
を JNDI にバインドし、 管理されていない環境では static
シングルトンを使用することが推奨されます。 また、 これらの詳細からアプリケーションコードを保護するため、 HibernateUtil.getSessionFactory()
など、 ヘルパークラスの SessionFactory
に対する実際のルックアップコードを非表示にすることが推奨されます。 このようなクラスは Hibernate の起動にも便利です。 詳細は第 1 章を参照してください。