假设您有一个数据库表名table1,其中有列名和姓。两个不同的客户端从Java应用程序打开相同的视图,并同时获取同一个人的数据。

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

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

因此,如何使用Hibernate而不使用Hibarnete来解决此问题。任何的想法?

最佳答案

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

简而言之,比较实体的时间戳记(如果已更新),然后比较更改并将其显示给想要更新该实体的用户。

09-11 17:51
查看更多