База данных: блокировка предметов на определенный период времени - PullRequest
0 голосов
/ 23 июня 2011

Мы планируем использовать Hibernate Framework для приложения, похожего на приложение электронной коммерции.

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

Как мы можем разработать вышеуказанное требование? Идеи приветствуются.

1 Ответ

2 голосов
/ 23 июня 2011

Вы, вероятно, не хотите использовать блокировку уровня базы данных для этого.Большинство баз данных и конфигурации баз данных не основаны на концепции длительных блокировок.

Самый общий подход, который я могу придумать, - это создать какой-либо сервис блокировки в вашем приложении.Служба блокировки имеет синхронизированные методы, такие как tryObtainLock, которые получают блокировку и возвращают значение true, если блокировка доступна, или возвращают значение false, если блокировка была недоступна (в этот момент вы, вероятно, отправите сообщение об ошибке пользователю, сообщив ему, что элемент заблокирован).

Служба блокировок может затем сохранить в своей таблице список блокировок, кто их запрашивал и когда они были получены.Время от времени вы можете проверять, удерживались ли какие-либо замки более 7 минут, и если да, отпустите их и уведомите человека, получившего замок, что у него больше нет этого.

...