| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Как правильно использовать пул соединения с БД |
| Автор: di109 24.12.2012, 16:05 | ||||
| Ниже приведен код который используя шаблон Singliton создает пул соединения с БД, в сервлете в методе ИНИТ создается это соединение. На практике работает (ошибок нет) 1. Правильно ли написан код 2. Как, кога и где закрыть этот пул 3. Может мне показалось, но с пулом он стал работать медленнее, чем без пула
|
| Автор: Старовъръ 25.12.2012, 21:54 |
| 1. Код выглядит правильно, однако Синглтон нужно инициализировать прям в статическом поле, а не при первом вызове. Иначе чревато проблемами в многопоточной среде, подробней о Singleton можно прочесть http://articles.javatalks.ru/articles/6. Плюс посмотри в сторону Dependency Injection фреймворков: Guice, Spring. 2. Думаю корректней сказать - завершить пул. Пул - это не соединение, он не закрывается. Разрушаться/завершаться он должен самим контейнером раз уж используется JNDI. 3. Без пула работать быстрей не может, т.к. соединение каждый раз создается новое. Собственно пул для этого и нужен. Когда приложение и сервер находятся на одной машине это не так ощутимо, однако все равно разница будет. http://articles.javatalks.ru/articles/8 пример настройки пула для MySQL, однако там используется DI framework а не JNDI, надеюсь это не собъет с толку. |
| Автор: di109 30.12.2012, 13:54 |
| А если возникнет такая ситуация: есть сервлет (контроллер), модель (java класс), и вид (jsp файл), сервлет (контроллер) - используя методы модели, (заносит, удаляет, обновляет данные в БД), в качестве соединения используется pool, который создается в методе init() и завершается в методе destroy(). Будет ли считаться за ошибку если я в виде (jsp файл) опять создам pool и используя метод модели, который возвращает данные, выведу данные из БД в браузер? |