java - 可能覆盖数据库表

标签 java hibernate jakarta-ee database-connection

假设您有一个名为 table1 的数据库表,其中包含列 name 和 surname。两个不同的客户端从 java 应用程序打开相同的 View ,并同时获取同一个人的数据。

1) 第一个客户更改了名称并按下保存按钮以更新数据库记录。 2) Client2 仍然在屏幕上看到旧记录,然后按保存按钮更改姓氏。

它实际上用旧名称覆盖记录。我想在单击按钮时在更新数据库之前检查并获取最新数据,但我不喜欢这个解决方案,因为在更新之前进行了第二次查询。

那么我们如何通过使用Hibernate而不使用Hibarnete来解决这个问题呢?有什么想法吗?

最佳答案

当然,如果您不希望某些内容被覆盖,那么您必须在更新之前检查数据。但它并不总是具有良好缓存策略的真正查询。您还可以使用上次更新的时间戳来更轻松地进行比较。另一种策略是当第一个用户读取实体时锁定实体。但这对于 Web 应用程序来说通常不是一个好的设计,或者您必须集成消息传递服务,该服务将通知所有实际打开该实体的用户进行更新。但我认为这并不是那么容易实现,而且是一个更高级的功能。

简而言之,比较实体的时间戳,如果已更新,则比较更改并向想要更新该实体的用户显示它们。

关于java - 可能覆盖数据库表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36318747/

相关文章:

java - 在java正则表达式中捕获同一组的多个实例

java - Hibernate - 持久化多态连接

java - 如何使用 spring-boot 阻止插入并仅允许更新我的对象?

java - Hibernate Search 在插入后不会重新索引 lucene 索引

java - 删除转义字符

java - 使用 Java 从 SharePoint 列表中删除文件

java - 如何解决重复条目 : com/google/gson/JsonParseException. 类?

java - Android 中的联系人列表排序

java - EJB - Home/Remote 和 LocalHome/Local 接口(interface)

model-view-controller - 关于 Java EE 6 架构的问题