java - Mysql和java : How to handle multiple users when it comes down to concurrent updates

标签 java mysql orm locking

我几乎到处都用我知道的术语进行了查找,但没有找到任何好的解决方案。我正在尝试制作一个本质上是簿记的小应用程序。我使用 java 作为前端,使用 MySQL 作为数据库。

该应用必须支持多个用户(3-4),因此如果两个用户想要编辑同一行,我想实现某种保护。

我研究过的东西以及我不知道是否应该使用它们的原因:

  • Hibernate:我看到多个线程说 ORM 使 future 的事情变得复杂
  • 乐观/悲观锁定:使用 hibernate 或 SELECT ... FOR UPDATE 我读过这对并发性不利

我不知道还要研究什么。

感谢您的阅读

最佳答案

您可以从应用程序中实现某种锁定数据库中的行,例如添加“lockedby”列,并将客户端的标识符作为值。在您的应用程序中,在授予编辑该行的权限之前,请检查该标志。如果程序仍处于编辑模式,应用程序应该重新获取锁,因此如果客户端失败,该行不会永远保持锁定状态。只是一个想法,但我认为这是一个可能的解决方案。

另一种方法是在提交更新之前检查该行是否已更改。通过检查内容的哈希和可以轻松实现。

关于java - Mysql和java : How to handle multiple users when it comes down to concurrent updates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60096867/

相关文章:

java - Java中不插入MySQL数据库

java - org.hibernate.TransientObjectException : object references an unsaved transient instance - save the transient instance before flushing

java - "String Compact"给当前的JNI引入了一些性能问题,如何避免

java - CentOs 7 - Java SQL 错误

java - 爆炸的 Artifact 无法用 glassfish 上传

mysql - 从日期范围中查找缺失的日期

javascript - Loopback相关模型属性问题

java - 在xml中使用hibernate调用Oracle存储过程

java - Jfreechart 中的动态饼图 - 如何设置颜色

java - 是否有用于通过 HTTP、HTTP 隧道发送二进制数据的 Java 库?