2

我需要实现一些机制来防止用户同时编辑相同的对象。这是我的申请流程:

  1. 转到“列表”页面
  2. 选择行以编辑表单数据表
  3. 单击编辑按钮(导航到“编辑”页面)
  4. 更改数据
  5. 单击“保存”或“取消”(导航回“列表”页面)

我希望我可以在第 3 步检查。如果另一个用户正在编辑相同的记录(相同的 id)并显示信息,例如“对不起,另一个用户正在编辑这个”。

我的想法是保留他们当前正在编辑的已登录用户和表名 + id 的地图。为此,我将使用应用程序范围的 bean(例如 EJB 3.1 @Singleton)。你能指出这个解决方案的弱点吗?你能提出其他建议吗?

我使用 Java EE 6、Seam3、Glassfish 3 和 Oracle DB 11。我使用 MyBatis,没有 JPA 框架。

4

1 回答 1

1

最好有某种机制来接受明确识别的更改,并且在应用更改时,检测更改是否是在与现在存在的数据不同的副本上启动的,并引发异常。

这种工作流程避免了“我无法拯救公司,因为 CA 有人开始更改关键记录,然后又去吃午饭”的恐惧。

阅读Subversion 书的前几章。虽然您目前不关心数据版本控制,但与旧的“图书馆”系统相比,冲突场景更完整,也更经过深思熟虑,在旧的“图书馆”系统中,共享项目只要由一个人拥有,就无法使用。

于 2012-09-11T19:12:49.630 回答