【问题标题】:Lock a row in database and release it later锁定数据库中的一行并稍后释放它
【发布时间】:2020-12-13 06:33:15
【问题描述】:

我有以下用例 -

  1. 用户注册并在表格中填写详细信息。用户数据存储在数据库中的“用户”表下。
  2. 管理员登录到应用程序。验证用户数据并启用用户。

这里的要求是锁定用户数据以防止任何进一步的更新或删除操作,并且只允许读取操作。只有在用户详细信息得到管理员批准后,我们​​才会解除对用户数据的锁定。

我探索了弹簧靴悲观锁定。但是,它不适合上面的用例,因为我将允许在一个事务下锁定和释放。我们在 Spring Boot 下是否有任何功能可以锁定表的行,然后再释放它?

或者有没有办法使用spring boot来实现一个工作流程?

【问题讨论】:

    标签: spring-boot spring-mvc spring-data-jpa spring-data locking


    【解决方案1】:

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

    这根本不是你的情况。

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

    【讨论】:

      【解决方案2】:

      你应该看看社区项目Spring Content

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        • 2021-04-12
        相关资源
        最近更新 更多