3.8.2. SessionFactory の JNDI への登録

3.8.2. SessionFactory の JNDI への登録

JNDI に登録した Hibernate SessionFactory はファクトリのルックアップと新しい Session の作成を簡易化します。これは JNDI に登録された Datasource には関連せず、両方とも単に同じ登録を使うことに注意してください。

もし SessionFactory を JNDI ネームスペースに登録したい場合、特別な名前(例えば、 java:hibernate/SessionFactory )を hibernate.session_factory_name プロパティに使ってください。もしこのプロパティを省略した場合、 SessionFactory は JNDI に登録されません。(これは Tomcat のようなデフォルト実装で JNDI が読み取り専用の環境の場合は特に便利です。)

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章を参照してください。