【发布时间】:2013-08-12 20:07:08
【问题描述】:
在工作中,我们正在开发一个 RESTful 应用程序,其中数据层将由 Hibernate 处理。但我们不确定如何处理实体更新。
我们计划做以下事情:
1) 客户端通过 id 请求实体
2) Hibernate 加载实体,请求的字段(始终带有版本)被复制到 DTO 中,该 DTO 被转换为 JSON 并发送到客户端
3)客户端管理一些字段并将实体(带有版本号)发送回服务器。
4) 服务器接收到的 JSON 转换为 DTO。
5) 从 Hibernate 加载对应的实体,并将 DTO 的 props 复制到实体中。
=> 即使设置了客户端的版本号,实体也总是被覆盖。 这是否意味着我们总是需要自己检查客户端的版本号和加载的实例的版本号,而不是 Hibernate 这样做?
在带有会话的常规应用程序中,分离的实例保存在 HttpSession 中。每当客户端更新实体时,都会从 HttpSession 检索实例并更新一些属性。每当 Hibernate 提交更新时,如果版本号为
这里的问题是我们没有任何 Http 会话,因为我们试图成为 RESTful。
是否有通用的解决方案来处理 RESTful 应用程序中的乐观锁定,而不是自己检查版本号?
【问题讨论】:
标签: hibernate rest dto optimistic-locking