通过多个会话与数据库进行Java安全通信

问题描述 投票:0回答:1

我必须使用Java为我的公司开发一个小型应用程序,该应用程序应显示数据库中的数据。 所显示的数据应在gui中可编辑,并使用保存按钮将已编辑的数据写入数据库。 我的问题是,由于多个用户将同时使用该应用程序,因此该如何处理数据库通信? 我认为如果人A观看数据而人B进行更改会出现问题。 如果现在人A保存他的更改,则人B的数据将丢失。

我无法在互联网上找到任何东西,因为我不知道我必须使用哪个关键字进行搜索。 我只能找到一种叫做dao模式的东西,但我认为那不是我正在寻找的东西。

希望您能够帮助我。

java database session design-patterns communication
1个回答
2
投票

您的问题被称为数据库锁定。

锁定也许是最被忽略的持久性考虑因素。 大多数应用程序倾向于在开发过程中忽略对并发问题的思考,然后在投入生产之前迷失于一种锁定机制。 考虑到有大量软件项目失败,被取消或从未获得过大的用户基础,这也许是合乎逻辑的。 但是,对于大多数应用程序来说,锁定和并发是一个至关重要的问题,或者至少是一个非常重要的问题,因此可能应该在开发周期的早期就予以考虑。

如果应用程序将有并发写入器写入相同的对象,则锁定策略至关重要,因此可以防止数据损坏。 有两种防止同时修改同一对象/行的策略: 乐观和悲观的锁定。 从技术上讲,还有第三种策略,鸵鸟锁或不锁,这意味着将自己的头埋在沙子里而忽略了这个问题。

乐观锁

乐观锁定假定从读取数据到写入数据之间不会修改数据。 这是当今的持久性解决方案中使用并推荐的最常见的锁定样式。 该策略包括检查原始对象读取的一个或多个值在更新时是否仍然相同。 这可以验证对象在读取和写入之间没有被其他用户更改。

悲观锁定

悲观锁定意味着在开始编辑对象之前先获得对象的锁定,以确保没有其他用户在编辑该对象。 悲观锁定通常通过使用数据库行锁定来实现,例如通过SELECT ... FOR UPDATE SQL语法。 读取并锁定数据,进行更改并提交事务,从而释放锁定。

有关更多信息以及如何使用JPA在Java中实现它,请阅读Java Persistence Locking。

© www.soinside.com 2019 - 2024. All rights reserved.