![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
Такая ситуация: есть web приложение которое должно работат с БД есть синглетоновский класс для работы с БД - все работает!
Но работает, как мне кажется, неэфективно, например: пользователь вводит логин и пароль, нажимает субмит, jsp страница получает инстанс "БД" класса, передает ему логин и пароль, этот инстанс создает соединение с БД, выполняет метод, закрывает соединение с БД, возвращает результат назад. Все бы хорошо, но если пользователей много, и кроме "входа на сайт" выполняются другие операции с БД, то мне кажется я насилую СУБД постоянными подключениями/отключениями. Как вариант решения проблемы вижу так: Пользователь при первом обращении к БД открывает соединение и это соединения не закрывается пока он сидит на сайте, как только он ушел с него соединение закрылось... Как такое сделать я пока не знаю, то есть отловить момент ухода пользователя с сайта. ЗЫ А в идеале наверное было бы хорошо создавать соединение для каждого подключеня, но это уже другая тема, и после решения текущей возможно вернусь к ней. -------------------- |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
В общем случае ты не базу насилуешь, а клиента по части производительности - операции подключения и отключения отнюдь не быстрые. Вообще подобная проблема неоднократно обсуждалась и ее решение - это использование пула соединений с базой данных. Суть в следующем. Создается массив соединений с БД, как правило, ограниченный по размеру. В начале работы он пустой. При первом обращении к БД создается новое соединение, выполняется какая-то операция и соединение не закрывается, а помещается в этот массив. При следующем обращении к БД, реализация пула ищет в массиве свободные соединения и берет первое попавшееся, если нет свободных, то создается новое. Если количество соединений достигло максимума, запрашивающий поток переводится в состояние ожидания. Все соединений закрываются скопом когда происходит закрытия источника данных. Есть множество готовых реализаций пула соединений. Какие есть реализации можно посмотреть здесь - http://www.java-source.net/open-source/connection-pools. Я работал с DBCP, вполне себе ничего. Его же использует Tomcat. Поведение конкретного пула может отличаться от того, что я написал, но в общем случае это так. Это сообщение отредактировал(а) tux - 22.2.2007, 15:50 |
|||
|
||||
| IDVsbruck |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 778 Регистрация: 12.11.2006 Репутация: нет Всего: 22 |
А зачем вообще заморачиваться со столь низкоуровневым управлением общения с базой, если есть Hibernate или OJB, в настройках которых можно определить тип подключения к БД. Заодно и запросно-ответную базу проще реализовать ...
|
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
Я пока еще только учусь и не знаком с этим. Да и делаю это для веб приложения, которое у меня на бесплатном хостинге, где есть только Resin (или как его там...) и MySQL и больше ничего, даже EJB не поддерживается...
-------------------- |
|||
|
||||
| connectionlost |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 15.12.2006 Где: MO Репутация: нет Всего: нет |
Даже ЙэДжиБи...
Маштабный вы человек Это сообщение отредактировал(а) connectionlost - 24.2.2007, 20:51 |
|||
|
||||
| Hidrag |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 877 Регистрация: 9.4.2005 Где: JDK Репутация: 2 Всего: 25 |
Ну... у меня это на очереди по изучению J2EE после Serlet/Jsp
-------------------- |
|||
|
||||
| seth |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 4.6.2006 Репутация: 1 Всего: 1 |
Тут возникло пару вопросов по реализации: 1. А как при поиске свободного соединения проверяются права на доступ к БД? 2. Всмысле закрытия источника данных? |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
||||
|
||||
| ylims |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 28.2.2007 Репутация: нет Всего: нет |
а есть ли линка на документацию по Hibernate или OJB (желательно на rus) --------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла. |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
У Hibernate родная документация отличная - http://www.hibernate.org/hib_docs/v3/refer...en/html_single/. На русском не существует в природе насколько я знаю. |
|||
|
||||
| ylims |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 28.2.2007 Репутация: нет Всего: нет |
Вот нашёл на русском, http://www.hibernate.org/hib_docs/referenc...html/index.html Это сообщение отредактировал(а) ylims - 1.3.2007, 03:47 --------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла. |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Мдя, существует оказывается. Только это по версии 2.1.3, ей лет 5 от роду. |
|||
|
||||
| ylims |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 28.2.2007 Репутация: нет Всего: нет |
значит что, инфа там уже не актуальна и нужно читать инфу посвежее? --------------------
ЦитатаНу и запросы у вас - сказала база данных и повисла. |
||||
|
|||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 74 Всего: 132 |
Для ознакомления можно почитать конечно, но там поменялось с тех пор очень многое вплоть до названий пакетов. Лучше взять что-то свежее, я думаю. В общем рекомендую следующее. Если на английском читать совсем тяжело, то читай на русском. Но учитывай следующее:
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |