Mysql 和 java :涉及并发更新时如何处理多个用户
Mysql and java : How to handle multiple users when it comes down to concurrent updates
我用我知道的术语到处找了找,但没有找到任何好的解决方案。我正在尝试做一个基本上做簿记的小应用程序。我对前端使用 java,对数据库使用 MySQL。
该应用程序必须支持多个用户 (3-4),因此如果两个用户想要编辑同一行,我想实施某种保护。
我研究过的东西以及我不知道是否应该使用它们的原因:
- Hibernate:我看到多个线程说 ORM 正在使事情复杂化
- Optimistic/Pessimistic 锁定:使用休眠或 SELECT ...我读过的 FOR UPDATE 不利于并发
我不知道还要研究什么。
感谢阅读
您可以在您的应用程序中实施某种锁定数据库中行的操作,例如添加一列 "lockedby",并将客户端的标识符作为值。在您的应用程序中,在您授予编辑行的访问权限之前,您会检查该标志。如果程序仍处于编辑模式,应用程序应重新获取锁,因此如果客户端失败,该行不会永远保持锁定状态。只是一个想法,但我认为这是一个可能的解决方案。
另一种方法是在提交更新之前检查该行是否已更改。可以通过检查内容的哈希和轻松实现。
我用我知道的术语到处找了找,但没有找到任何好的解决方案。我正在尝试做一个基本上做簿记的小应用程序。我对前端使用 java,对数据库使用 MySQL。
该应用程序必须支持多个用户 (3-4),因此如果两个用户想要编辑同一行,我想实施某种保护。
我研究过的东西以及我不知道是否应该使用它们的原因:
- Hibernate:我看到多个线程说 ORM 正在使事情复杂化
- Optimistic/Pessimistic 锁定:使用休眠或 SELECT ...我读过的 FOR UPDATE 不利于并发
我不知道还要研究什么。
感谢阅读
您可以在您的应用程序中实施某种锁定数据库中行的操作,例如添加一列 "lockedby",并将客户端的标识符作为值。在您的应用程序中,在您授予编辑行的访问权限之前,您会检查该标志。如果程序仍处于编辑模式,应用程序应重新获取锁,因此如果客户端失败,该行不会永远保持锁定状态。只是一个想法,但我认为这是一个可能的解决方案。
另一种方法是在提交更新之前检查该行是否已更改。可以通过检查内容的哈希和轻松实现。