Зачем связывать Hibernate SessionFactory с ресурсом JNDI? - PullRequest
8 голосов
/ 24 марта 2010

В моем нынешнем приключении по изучению гибернации и настройке его для использования пула соединений сервера приложений большинство примеров и ресурсов указывают вам на направление привязки SessionFactory к ресурсу JNDI в вашем сервере приложений в процессе.

Мне интересно, какая польза от этого? Поскольку вы можете получить доступ к пулу соединений без этого.

1 Ответ

10 голосов
/ 31 марта 2010

По той же причине, по которой вы бы использовали JNDI для чего-либо, - для переноса конфигурации из приложения в среду развертывания.

С JNDI вы в основном говорите: «Для этого приложения требуется SessionFactory; его имя должно быть X», и вы довольны, если на сервере приложений настроен SessionFactory с именем X. Этот вид экстернализации имеет несколько привлекательных преимуществ:

  1. Вы можете использовать совершенно разные конфигурации на разных машинах (производственная среда и QA используют Oracle, разработчики используют HSQL, ...).

  2. Вам не нужно информировать процесс сборки о конфигурациях (не более ant war_for_qa или обойти с профилями Maven).

  3. У вас нет соблазна проверять конфигурации в управлении версиями, и поэтому ваш пароль к действующей базе данных не будет известен каждому временному, интерну, консультанту или бывшему сотруднику, который когда-либо имел (или будет иметь!) Доступ в хранилище.

  4. Ваши инструкции по установке / настройке не будут включать такие элементы, как «для настройки входа в базу данных, отредактируйте файл foo.properties в файле WAR», что неизбежно приведет к перезаписи конфигураций на рабочем сервере в худшем случае Возможный момент, потому что системный администратор, который работал все выходные, развернул неотредактированную WAR, потому что кофе закончился в воскресенье днем.

JNDI просто является «стандартным» способом выполнения этой экстернализации в Java, что означает, что новым разработчикам / администраторам не потребуется двухдневного обучения, чтобы изучить особенности вашей собственной домашней системы конфигурации, которая действительно это довольно умно, но есть эта странная ошибка, в которую никто не хочет вникать, потому что она действительно странная и в любом случае у нее довольно простой обходной путь, & c.

Похожие: Какова цель JNDI?

...