锁定数据库中的一行,稍后再将其释放



我有以下用例-

  1. 用户注册并在表单中填写详细信息。用户数据存储在DB中的一个表下,如"User">
  2. 管理员登录到应用程序。验证用户数据并启用用户

这里的任务是锁定用户数据,使其不受任何进一步的更新或删除操作的影响,并且只允许读取操作。只有当管理员批准用户详细信息时,我们才会解除对用户数据的锁定。

我探索了弹簧靴悲观锁定。然而,它不适合上面的用例,因为我将允许在一个事务下锁定和释放。我们在spring-boot下有什么功能可以锁定表的行,然后再释放它吗?

或者有没有一种方法可以使用spring-boot来实现工作流过程?

悲观锁和乐观锁用于防止同时运行事务的并发更新。

这根本不是你的情况。

  1. 您可以在一个单独的表中创建一个用户,并在批准后将其复制到主表中
  2. 只需在User中添加一个标志列,如果标志为false,则不允许更新

您应该看看社区项目SpringContent。

这个项目包含一个名为Spring Versions JPA的模块,它允许您将锁定和版本控制语义添加到您描述的JPA实体中。这是内容管理应用程序中非常常见的用例(Spring content就是为之服务的(。你可以在这里阅读更多关于它的信息。

它被设计成一个独特的模块,可以与主要的Spring Content项目分开使用,但我不知道是否有人真的以这种方式使用过它,所以YMMV。也就是说,如果您在我们的github项目中提出问题,我很乐意为您提供帮助。这可能比自己编写这个逻辑更容易。

最新更新