休止状態を学習し、アプリサーバーの接続プールを使用するように設定するという私の現在の冒険では、そこにあるほとんどの例とリソースは、その過程でアプリサーバーの JNDI リソースに SessionFactory をバインドする方向を示しています。
これの利点は何ですか?これを行わなくても接続プールにアクセスできるためです。
何にでも JNDI を使用するのと同じ理由で、構成をアプリケーションからデプロイメント環境に移動します。
JNDI では、基本的に「このアプリケーションには が必要です。その名前は X にする必要があります」と言うと、アプリケーション サーバーに呼び出された X が構成SessionFactory
されている限り満足します。SessionFactory
この種の外部化には、いくつかの魅力的な利点があります。
マシンごとに非常に異なる構成を使用できます (本番環境と QA では Oracle を使用し、開発者は HSQL を使用するなど)。
ビルド プロセスに構成を認識させる必要はありません ( ant war_for_qa
Maven プロファイルをいじったりする必要はありません)。
構成をバージョン管理にチェックインしようとは思わないので、ライブ データベースのパスワードは、リポジトリにアクセスしたことがある (またはアクセスする予定の!) 派遣社員、インターン、コンサルタント、または元従業員のすべてに知られるわけではありません。
インストール/構成の手順には、「データベース ログインを構成するには、WAR ファイル内のファイル foo.properties を編集する」などの項目が含まれていません。日曜日の午後にコーヒーがなくなったので、たまたま編集されていない WAR をデプロイしました。
JNDI はたまたま Java でこの外部化を行うための「標準的な」方法です。つまり、新しい開発者/管理者は、非常に巧妙な自作の構成システムの癖を学ぶために 2 日間のトレーニングを必要としません。しかし、この奇妙なバグには誰も掘り下げたくないという理由があります。
関連: JNDI の目的は何ですか?