Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JDBC connection 
:(
    Опции темы
GShadrin
  Дата 4.12.2011, 12:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 20.7.2009
Где: Екатеринбург

Репутация: нет
Всего: нет



Добрый день.

Возникло несколько вопросов по JDBC.
После загрузки необходимого драйвера мы можем получить connection к базе данных, используя который может выполнять запросы к бд. DriverManager предоставляет статический метод getConnection, который возвращает connection, принимая на вход параметры. Мое приложение в течении своего жизненного цикла будет постоянно взаимодействовать с субд.  На мой взгляд разумно держать постоянно (по возможности) открытым подключение.
Вопросы: 
  • что происходит когда я вызываю DriverManager.getConnection? Происходит подключение? Сколько оно держится? Пока не вызову close?
  • если я еще раз вызываю  DriverManager.getConnection выполняется подключение заново и создание нового объекта или мне вернут ссылку на тот же объект, что и при первом вызове?
  • имеет ли смысл держать в состоянии контроллера connection и если он не нулл и не isClossed использовать его, не вызывая DriverManager.getConnection?
  • что происходит при потери соединения?

Спасибо за любую помощь.
PM MAIL   Вверх
jk1
Дата 4.12.2011, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

что происходит когда я вызываю DriverManager.getConnection? Происходит подключение? Сколько оно держится? Пока не вызову close?

Открывается физическое соединение с базой. Оно будет активно до тех пор, пока не вызван close(). Если close() не вызвать совсем, то соединение отвалится по тайауту со стороны базы, но произойдет это нескоро.

Цитата

если я еще раз вызываю  DriverManager.getConnection выполняется подключение заново и создание нового объекта или мне вернут ссылку на тот же объект, что и при первом вызове?

Вернется новый объект Connection, за которым будет лежать новое соединение с СУБД

Цитата

имеет ли смысл держать в состоянии контроллера connection и если он не нулл и не isClossed использовать его, не вызывая DriverManager.getConnection?

Ни в коем случае. Для веб-приложений надо использовать пул соединений и брать соединения из него. Что это?

Цитата

что происходит при потери соединения?

при попытке отправить запрос при, скажем, отвалившейся сети будет брошен SQLException. Предвидя следующий вопрос сказу скажу, что никакого флага о потере соединения нет и проверить, живое ли соединение, можно только выполнив запрос.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
GShadrin
Дата 4.12.2011, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 20.7.2009
Где: Екатеринбург

Репутация: нет
Всего: нет



Большое спасибо за ответы.

Цитата

Цитата

имеет ли смысл держать в состоянии контроллера connection и если он не нулл и не isClossed использовать его, не вызывая DriverManager.getConnection?

Ни в коем случае. Для веб-приложений надо использовать пул соединений и брать соединения из него. Что это?


У меня не веб приложение, контроллер я имел ввиду не как обработчик веб запросов, а некоторая сущность, которая отвечает за работу с базой данных (наверно контроллер не очень хорошее название). Спасибо за идею пула соединений. Как я понимаю он как и в моей идеи хранит в себе соединения, только в отличии от нее сразу несколько, что не создает загрузки только одного соединения (как в моем случае).
PM MAIL   Вверх
AntonSaburov
Дата 5.12.2011, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Тут тоже можно прочитать про пул коннектов - http://java-course.ru/students/students.php?name=part9
PM MAIL WWW ICQ   Вверх
GShadrin
Дата 5.12.2011, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 20.7.2009
Где: Екатеринбург

Репутация: нет
Всего: нет



Спасибо за ссылки.
Нашел интересную статью на сайте джавы про то как организовать пул, в том числе делают проверку активности соединений. http://java.sun.com/developer/onlineTraini...ok/conpool.html

Попробую привернуть к проекту.

Это сообщение отредактировал(а) GShadrin - 5.12.2011, 18:23
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1101 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.