我们计划将hibernate框架用于类似电子商务应用程序的应用程序。
我们要求,如果用户签出物品并进入网关,我们将锁定该物品7分钟,之后物品将被释放。
我们如何设计上述要求?我们很感激。
答案 0 :(得分:2)
您可能不希望为此使用数据库级别锁定。大多数数据库和数据库配置都不是围绕长期锁定的概念构建的。
我能想到的最通用的方法是在您的应用程序中构建某种锁定服务。锁定服务具有同步方法,如tryObtainLock,它将获得锁定,如果锁定可用则返回true;如果锁定不可用,则返回false(此时您可能向用户发送错误,通知他们项目已被锁定)。
然后,锁定服务可以在其自己的表中存储锁定列表,这些锁定要求它们以及何时获取它们。每隔一段时间你就可以查看是否有超过7分钟的锁定,如果有,请释放它们并通知获得锁定的人不再拥有它。