Hibernate 自动版本控制

Posted

技术标签:

【中文标题】Hibernate 自动版本控制【英文标题】:Hibernate Automatic Versioning 【发布时间】:2011-10-03 05:23:10 【问题描述】:

我开发了一个客户维护应用程序。用户可以通过 Web 界面更改客户详细信息。我想处理以下场景:

    User 1 加载 customer1 详细信息。 User 2 加载 customer1 详细信息。 User 1 更改并保存customer1nameUser 2 只会更改和保存 customer1 的年龄。

在上面的场景中,由于User 2 覆盖了User 1 的更新,最终数据库保存了customer1 的旧名称和新时代。我正在使用休眠。我听说 Hibernate Automatic Versioning 支持这一点。如果有人知道如何处理,请告诉我。

【问题讨论】:

【参考方案1】:

你只需要添加一个带有@Version注解的字段:

public class Customer 

 @Id
 private Long id;

 @Version
 private Long version;

 // rest of the fields, etc.


阅读this 文章了解更多信息。

【讨论】:

我在 Java 项目中的任何 ORM 上都使用 SpringJDBC。但我需要添加一些 Hibernate 的 @Version 功能,以防止出现类似那里描述的情况。那么也许你可以建议我实现 JDBC? 这种方法的通用术语称为乐观锁定。你可以在这里找到一些指导:***.com/a/8880896/309683【参考方案2】:

一种解决方案,当第二个请求倾向于更新详细信息时,首先检查是否在加载详细信息后更新,如果是则引发异常并允许用户在再次加载详细信息后进行更改,您可以使用修改时间戳来比较

【讨论】:

以上是关于Hibernate 自动版本控制的主要内容,如果未能解决你的问题,请参考以下文章

数据库的版本控制系统

Java、Maven Jar 文件版本控制部分

无法提交断点LineBreakpoint hibernate4CURD : -1, 原因是: 找不到 URL 'file:/E:/版本控制/Design-java/hibernate4CURD

代码的自动语义版本控制

版本控制不会自动增加

ssh整合,从hibernate那个版本开始需要open session in view 才能开启事务?