gpt4 book ai didi

java - 如何防止使用 Hibernate 的 Java 应用程序丢失更新?

转载 作者:行者123 更新时间:2023-11-30 04:11:50 25 4
gpt4 key购买 nike

如何防止 Java Web-start 应用程序中丢失更新问题?这种情况是,如果 2 个用户正在访问同一条记录,而一个人只是进行了一些修改并更新了数据库。其他用户仍然拥有旧数据,并且在不知道第一个用户已更改数据的情况下,他进行了一些修改并更新了数据库。这导致第一个用户丢失更新。

我需要确保在保存应用程序之前需要将记录与数据库进行比较,如果发现更改,则需要通知用户,并且我需要以某种方式确保用户在之后看到更改当前用户可以应用他的更改并再次提交到数据库。

以下是我的 Java Web Start 应用程序的详细信息:

  • 应用程序使用 Java Web 启动技术,与 Tomcat7 上运行的 Servlet 进行通信。
  • 数据库是 SQL Server 2012。
  • 服务器计算机:Windows 64 位 2008 R2 Enterprise Server。
  • Java 7 更新 25 64 位
  • hibernate 版本 - 3.0

有什么办法可以实现吗?

请多多指教。

提前致谢

最佳答案

这听起来像是 optimistic strategy 的经典案例。例如

Optimistic concurrency control (OCC) is a concurrency control method for relational database management systems that assumes that multiple transactions can complete without affecting each other, and that therefore transactions can proceed without locking the data resources that they affect. Before committing, each transaction verifies that no other transaction has modified its data. If the check reveals conflicting modifications, the committing transaction rolls back

也许会保持记录版本号。

例如每条记录都会维护一个记录版本号。当客户端收到客户端时,它也会收到版本号。修改后,服务器会将记录号与数据库中的记录号进行比较,如果更改,则使用递增的版本号写入新记录。

然后,第二个客户端将具有相同的记录号(即两个客户端都正在更新记录)。这次服务器会识别出版本号已更改,并拒绝更新。

请注意,存在多种实现选项。数据库可以使用记录号或时间戳来实现这一点。数据库可以维护编辑历史记录,或者只是记录的最新版本。

关于java - 如何防止使用 Hibernate 的 Java 应用程序丢失更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19428490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com