Java与多个会话中的数据库安全通信

时间:2016-06-23 14:00:53

标签: java database session design-patterns communication

我必须在Java中为我的公司开发一个小应用程序,它应该显示来自数据库的数据。显示的数据应该在gui中可编辑,并且使用保存按钮,编辑的数据应该写入数据库。 我现在的问题是如何处理数据库通信,因为多个用户会同时使用该应用程序?如果A人正在观看数据并且B人做了改变,我认为会有问题。如果现在人A保存他的更改,则来自人B的数据将丢失。

我在互联网上找不到任何东西,因为我不知道我必须使用哪个关键字进行搜索。我只能找到一种名为dao pattern的东西,但我不认为这就是我要找的东西。

希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

您的问题称为数据库锁定;

  

锁定可能是最被忽视的持久性考虑因素。最   应用程序往往忽略了对并发问题的思考   开发,然后在进入之前用锁定机制进行刷新   生产。考虑到大部分软件项目   失败或被取消,或永远不会实现庞大的用户群,也许这样   合乎逻辑。但是,锁定和并发至关重要   对于大多数应用程序来说,这是一个非常重要的问   在开发周期早期考虑的事情。

     

如果应用程序将同时写入相同的对象,   然后锁定策略是至关重要的,以便数据损坏可以   预防。有两种防止并发的策略   修改相同的对象/行;乐观和悲观   锁定。从技术上讲,有第三种策略,鸵鸟锁定,或者没有   锁定,这意味着将你的头放在沙子中并忽略这个问题。

     

乐观锁定

     

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

     

悲观锁定

     

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

有关更多信息以及如何使用JPA阅读Java Persistence Locking

在Java中实现它