我几乎到处都用我知道的术语进行了查找,但没有找到任何好的解决方案。我正在尝试制作一个本质上是簿记的小应用程序。我使用 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/