| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Управление HibernateSession через ServletFilter |
| Автор: UnicornMirage 5.7.2009, 15:41 |
| Здравствуйте. Хотелось бы спросить сообщество относительно сумасшедшей мысли, пришедшей в голову, после копания в springframework+hibernate+transactions - и с ними связанных библиотеках. Суть в следующем: хочется максимально упростить приложение, и очистить от избыточности. Предположим есть стандартное web-приложение с несложной бизнес-логикой. Используется hibernate, и какой нибудь простой Web MVC. Хорошим ли решением будет: создание фильтра, стоящего наверху всех цепочек вызова, который при обращении к нему открывает HibernateSession и кладёт ее в HttpSession, а по-завершению всех цепочек - закрывает HibernateSession, и удаляет из HttpSession. Вся стратегия управления транзакциями ложится на контроллеры. Мои предположения относительно этого: 1) более гибкая обработка транзакций 2) обращение к lazy-полям из любого места и любых контроллеров. Или это плохое решение? |
| Автор: powerOn 5.7.2009, 16:20 |
| https://www.hibernate.org/43.html не есть тоже самое? |
| Автор: UnicornMirage 5.7.2009, 17:27 | ||
Да, действительно, оно самое. Спасибо. Теперь второй вопрос - как быть с юнит-тестами в этом случае? Придется эмулировать сессии? И вообще - данный подход каков с точки зрения удобства? |
| Автор: UnicornMirage 5.7.2009, 22:01 |
| Вот еще мысль возникла - в высоконагруженных приложениях, по-видимому этот подход (управление сессией хибернейта через сервлет-фильтр) будет неэффективным, так как ведь на каждый HTTP-запрос будет создаваться HibernateSession - хотя не всегда она будет использоваться при этом. Так ведь? |
| Автор: powerOn 5.7.2009, 23:14 | ||
Не могу точно сказать, но осмелюсь предположить что Hibernate использует пул сессий для оптимизации скорости их создания. Если в реальном приложении, требующем высокой нагрузки, выяснится что получение экземпляра HibernateSession является узким местом, то тогда и можно задуматься над более хитрыми решениями. |