我必须在Java中为我的公司开发一个小应用程序,它应该显示来自数据库的数据。显示的数据应该在gui中可编辑,并且使用保存按钮,编辑的数据应该写入数据库。 我现在的问题是如何处理数据库通信,因为多个用户会同时使用该应用程序?如果A人正在观看数据并且B人做了改变,我认为会有问题。如果现在人A保存他的更改,则来自人B的数据将丢失。
我在互联网上找不到任何东西,因为我不知道我必须使用哪个关键字进行搜索。我只能找到一种名为dao pattern的东西,但我不认为这就是我要找的东西。
希望你能帮助我。
答案 0 :(得分:2)
您的问题称为数据库锁定;
锁定可能是最被忽视的持久性考虑因素。最 应用程序往往忽略了对并发问题的思考 开发,然后在进入之前用锁定机制进行刷新 生产。考虑到大部分软件项目 失败或被取消,或永远不会实现庞大的用户群,也许这样 合乎逻辑。但是,锁定和并发至关重要 对于大多数应用程序来说,这是一个非常重要的问 在开发周期早期考虑的事情。
如果应用程序将同时写入相同的对象, 然后锁定策略是至关重要的,以便数据损坏可以 预防。有两种防止并发的策略 修改相同的对象/行;乐观和悲观 锁定。从技术上讲,有第三种策略,鸵鸟锁定,或者没有 锁定,这意味着将你的头放在沙子中并忽略这个问题。
乐观锁定
乐观锁定假定数据之间不会被修改 当您读取数据直到您写入数据。这是最多的 在今天的持久性中使用和推荐的常见锁定方式 解决方案。该策略涉及检查来自的一个或多个值 原始对象读取时,更新它时仍然相同。这个 验证对象之间没有被其他用户更改 读和写。
悲观锁定
悲观锁定意味着在您之前获取对象的锁定 开始编辑对象,以确保没有其他用户正在编辑 物体。悲观锁定通常通过使用来实现 数据库行锁,例如通过
SELECT ... FOR UPDATE
SQL 句法。读取并锁定数据,进行更改并进行更改 事务已提交,释放锁。
有关更多信息以及如何使用JPA
阅读Java Persistence Locking