![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| XEugene |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
В доке по Hibernate нашел пример, с которым решил поработать.
Прикрутил к нему несложную web-морду из jsp и сервлетов, начал тестировать и вскоре натолкнулся на это проблему... Итак, при старте приложения у меня выводятся некие записи.
Метод currentSession класса HibernateUtil
На этой же странице поместил форму для добавления новых блогов. Добавляются они с помощью такого метода
Сразу же выяснилось, что если юзать показанные методы как есть, то метод createBlog, вызванный после выполнения метода listAllBlogNames, вызывает ошибку, потому что в listAllBlogNames была закрыта сессия. и это не смотря на то, что в createBlog она открывается снова в строке session = HibernateUtil.currentSession(); Чтобы добавление заработало мне пришлось убрать session.close() в блоке finally. Причем после добавления записи я делаю редирект на исходную страницу, где выводятся записи методом listAllBlogNames, и там у меня из-за закрытия сессии в createBlog возникала такая же ошибка, пока я не убрал session.close() и из createBlog... Таким образом у меня сейчас нигде не закрывается сессия и всё работает) Но где-то же я должен закрывать сессию, иначе у меня рано или поздно должен переполнится connection-пул Hibernate? Вот собственно и вопрос, как в этом маленьком простом примере правильно управлять сессиями? Когда закрывать сессию? |
||||||
|
|||||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 14 Всего: 104 |
Вы берету сессию у HibernateUtil, а потом закрываете ее сами.. Это неправильно. HibernateUtil открыл, он должен и закрывать.
Попробуйте так:
Ну, а если не заработает, тогда стектрейс ошибок в студию -------------------- Lost.... |
|||
|
||||
| XEugene |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
Да, я тоже об этом подумал.
Завтра посмотрю. Я немного изменил оригинальный пример, в котором сразу столкнулся с это проблемой, там не было HibernateUtil, сессия открывалась из закрывалась напрямую. |
|||
|
||||
| XEugene |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
При закрытии через HibernateUtil естественно все нормально работает.
Теперь более интересный вопрос... Ведь используемый выше способ управления сессиями это пресловутый session-per-operation, а
Разве не так? |
|||
|
||||
![]()
|
| Правила форума "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. |