![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| UnicornMirage |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 15.11.2005 Репутация: нет Всего: 1 |
Здравствуйте.
Хотелось бы спросить сообщество относительно сумасшедшей мысли, пришедшей в голову, после копания в springframework+hibernate+transactions - и с ними связанных библиотеках. Суть в следующем: хочется максимально упростить приложение, и очистить от избыточности. Предположим есть стандартное web-приложение с несложной бизнес-логикой. Используется hibernate, и какой нибудь простой Web MVC. Хорошим ли решением будет: создание фильтра, стоящего наверху всех цепочек вызова, который при обращении к нему открывает HibernateSession и кладёт ее в HttpSession, а по-завершению всех цепочек - закрывает HibernateSession, и удаляет из HttpSession. Вся стратегия управления транзакциями ложится на контроллеры. Мои предположения относительно этого: 1) более гибкая обработка транзакций 2) обращение к lazy-полям из любого места и любых контроллеров. Или это плохое решение? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Open Session in View не есть тоже самое?
|
|||
|
||||
| UnicornMirage |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 15.11.2005 Репутация: нет Всего: 1 |
Да, действительно, оно самое. Спасибо. Теперь второй вопрос - как быть с юнит-тестами в этом случае? Придется эмулировать сессии? И вообще - данный подход каков с точки зрения удобства? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Если вы используете, к примеру, Spring + Hibernate (или TopLink) то вам поможет spring-test. Он и инъекции сделает и транзакции нужные запустит. |
|||
|
||||
| UnicornMirage |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 15.11.2005 Репутация: нет Всего: 1 |
Вот еще мысль возникла - в высоконагруженных приложениях, по-видимому этот подход (управление сессией хибернейта через сервлет-фильтр) будет неэффективным, так как ведь на каждый HTTP-запрос будет создаваться HibernateSession - хотя не всегда она будет использоваться при этом.
Так ведь? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Не могу точно сказать, но осмелюсь предположить что Hibernate использует пул сессий для оптимизации скорости их создания. Если в реальном приложении, требующем высокой нагрузки, выяснится что получение экземпляра HibernateSession является узким местом, то тогда и можно задуматься над более хитрыми решениями. |
|||
|
||||
![]()
|
| Правила форума "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. |