数据库:在特定时间段内锁定项目



我们计划将hibernate框架用于类似于电子商务应用程序的应用程序。

我们有一个要求,如果用户签出一个项目并进入网关,我们将锁定该项目7分钟,之后该项目将被释放。

我们如何设计上述要求?想法值得赞赏。

您可能不想为此使用数据库级别的锁。大多数数据库和数据库配置都不是围绕长持有锁的概念构建的。

我能想到的最通用的方法是在应用程序中构建某种锁定服务。锁定服务具有同步的方法,如tryObtainLock,它将获得锁,如果锁可用则返回true,如果锁不可用则返回false(此时您可能会向用户发送错误,通知他们项目已锁定)。

然后,锁定服务可以在其自己的表中存储锁的列表,这些锁是谁要求的,以及何时获得的。每隔一段时间,您可以检查是否有锁被持有超过7分钟,如果是,请释放它们,并通知获得锁的人他们不再拥有锁。

最新更新