@wolf-9830

Как правильно соединиться с БД в java web?

Использую apache tomcat, следуя документации создал ресурс в файле context в /conf сервера, там описал соединение, по сути все понятно, не понятно стало с вот этой части документации:
Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();

1. Что за InitialContext();?
2. Что за метод такой загадочный lookup и его параметр?
3. Как в реальных и больших приложениях на java устанавливают соединение в бд? Что в каждом сервлете(ну или контроллере) писать те три строчки что выше?

Автор: бывший php программист
  • Вопрос задан
  • 173 просмотра
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Надеюсь, вы используете пул соединений. Иначе у вас будет некотролируемое число подключений к базе и все будет глючить и тормозить на каком-то их этапов, особенно с ораклом.

Теперь по вопросам:
1) InitialContext - инициализация контекста для поиска ресурсов в глобальном реестре. Это что-то типа LDAP внутри серверов приложений J2EE. Это нужно только для поиска уже инициализированных ресурсов, которые готовы к работе. Простой аналог в реальном мире - Microsoft AD, или служба каталогов, или реестр Windows.
2) Собственно сам поиск ресурса по его имени. Возвращается уже готовый инициализированный ресурс. В вашем случае сначала запрашивается контекст приложения (вторая строка), а затем запрашивается в нем подключение к базе.
3) Да, это правильный метод. Еще раз замечу, здесь не происходит само подключение к базе, здесь запрашивается уже готовое инициализированное соединение с базой. Всё происходит очень быстро. Ну и таким методом можно запрашивать не только коннект к базе, а еще целую кучу ресурсов, которые предоставляет сервер приложений, например очереди, jmx-бины, всяческие коннекторы, распределенные службы и прочий зомби-энтерпрайз.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы