Пессимистическая блокировка для многих пользовательских запросов - PullRequest
1 голос
/ 31 мая 2011

Можно ли создать пессимистическую блокировку, которая будет продолжаться для многих пользовательских запросов?

Мне интересно узнать, возможно ли это в Java EE с использованием Hibernate или PHP с использованием Doctrine или Propel.Я попробовал это с помощью Doctrine 2, но это невозможно, только на уровне базы данных (по запросу пользователя).

1 Ответ

3 голосов
/ 31 мая 2011

Это возможно, но много (ручной) работы.Все фреймворки для Hibernate и J2EE используют фильтры, чтобы начать сеансы при получении запроса и зафиксировать его при отправке ответа.

Итак, вам нужно отключить этот фильтр для вашего сервлета, создатьСеанс Hibernate с использованием фабрики, поместите его в сеанс HTTP пользователя и затем используйте этот сеанс H. для своей работы.

Обратите внимание, что не существует безопасного способа завершить такой сеанс, поскольку пользователь может просто прекратить использованиебраузер на пару часов.

Что-то, что может быть гораздо более полезным и стабильным, - это «временные» объекты: когда пользователь вносит изменения, сохраняйте временные объекты в базе данных, которые скрывают «реальные» объекты.Это позволяет сразу сохранить любые изменения.Когда пользователь доволен результатом, он может нажать кнопку, и вы можете скопировать данные из временных объектов обратно в реальные (с оптимистической блокировкой, конечно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...