Hibernate - Как ограничить одновременное чтение записи несколькими пользователями? - PullRequest
7 голосов
/ 02 апреля 2011

Мы используем Hibernate 3.6.0.У нас есть требование получить следующую доступную запись из таблицы.Как мы контролируем получение одной и той же записи несколькими одновременными пользователями?Нам нужно прочитать следующую доступную запись и обновить статус в столбце (вид блокировки), чтобы следующий пользователь не мог получить ту же запись.Мы добавили в таблицу столбец «Версия» (оптимистическая блокировка), но он, похоже, контролирует обновление.

Какое лучшее решение в Hibernate для достижения этой цели?

Заранее спасибо.Venkat

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

Вы пытались заблокировать запись? Hibernate поддерживает пессимистическую блокировку (SELECT FOR UPDATE), посмотрите документацию .

Вы также можете попробовать оптимистическую блокировку, это зависит от ожидаемого уровня параллелизма.

0 голосов
/ 03 апреля 2011

Вы можете добавить флаг, скажем, прочитанный (1 = true / 0 = false) и использовать этот флаг при получении объекта, например -

where read=0

после выбора вы можете обновить флаг чтения, чтобы запретить другому пользователю читать эту запись. если вы хотите - вы можете использовать флаг версии как флаг чтения, так как вы обновляете объект после того, как выбранная версия будет увеличиваться и может использоваться для различения прочитанных / непрочитанных записей.

Дайте мне знать, если это поможет, или я полностью пропустил вашу проблему.

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