powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate session and transaction
3 сообщений из 3, страница 1 из 1
hibernate session and transaction
    #38514602
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю вот здесь https://community.jboss.org/wiki/SessionsAndTransactions.
вроде понятно логически а програмно API под описываемаю реализацию не могу найти
Например я пользуюсь session-per-request-with-detached-objects pattern что в принципе логично достал объект отдал пользователю там пользователь порешал что то вернул данные где мы обновляем объект

а вот интересует session-per-conversation pattern который в статье описан как
достал объект и отдал пользователю, сессию отсоединил и положил в httpsession, дождался ответа от пользователя и закрепил flush новые данные.
тут вот вопросы появляются
поток в котором создавалась сессия скорее всего будет другим нежели тот в котором будет происходить flush
если пользователь кликнет и вообще покинет страницу, получится что сессия застрянет не освободив ресурсы.
как и от чего отсоединяется сессия

есть вот такой API session.disconnect() которые возвращает Connection но я пробовал проверить и isConnected и isOpen возвращают true но он вроде как если только предоставил jdbc connection для создания сессии
...
Рейтинг: 0 / 0
hibernate session and transaction
    #38514675
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ни одного знака вопроса что-то не увидел :-)

Если на пальцах, то conversation работает примерно так, как вы и описали. Сначала открывается сессия. Потом пользователь делает ряд действий, которые тут же применяются к этой сессии. Потом в самом конце происходит запись всех изменений в СУБД. Подход этот в целом плохой. Прежде всего тем, что между действиями пользователя сессия открыта. Более того, она может держать ряд локов в базе данных. В итоге такое вариант при внешне простоте совершенно не скалируется. Вот и все.

А с какого потока вы работаете с сессией, никого не волнует.
...
Рейтинг: 0 / 0
hibernate session and transaction
    #38514738
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если я не использую jta то сессии привязываются к потоку.
в случае томката так как нет встроенного менеджера транзакций то сессии(Session object) привязываются к потокам.

никакой гарантии нет что два запроса разнесенных во времени будут исполняться в одном потоке.

если использовать session with detached object То никакого лока нет. достали данные из базы закрыли сессию отдали данные в ui. получили изменения из UI обновили detached object открыли новую сессию сделали merge или saveOrUpdate закрыли сессию.
Две разные сессии, разные потоки.

меня больше интересует что имелось ввиду под session-per-conversation pattern точнее как это реализовать в коде. идея в принципе понятна. Но есть но.
Пока пользователь "думает", сессия в состоянии disconnected храниться в httpsession. Как только пользователь что то надумал и выполнил http request, то сессия достается из httpsession и восстанавливается соединение сессии - "каким то чудесным образом" и делается flush в БД.

вот тут и загвозка
что значит session disconnected? От чего дисконнектед.
Какий метод вызвать чтобы получить сессию в disconnected state
Как потом оживить сессию (точнее как сделать так чтобы во втором request метод session.flush не выбросил исключение)

Где это API что позволить это сделать (Хоть пример привели бы в статье)

при этом я вами согласен что сессию хранить открытой между http запросами не есть гуд, если не ошибаюсь в документации hibernate даже указано что сильно не рекомендуется так делать. только вот в статье которую я указал есть небольшое отличие в том сессия храниться в дисконнектед state
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate session and transaction
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]