0

与 DTO 一起使用 Hibernate 的设计问题。

在我们的一个实体上,我们使用乐观锁定和@Version 注释。当前的问题是,在合并后,版本号直到刷新后才更新。这意味着它发生在我们的 DTO 转换过程之外。我们最终使用旧版本号将转换后的 DTO 发送回客户端。对此的后续操作现在将导致乐观锁失败,因为 Hibernate 检查不同的数据库版本号。

我已经设法通过一些涉及使用 ThreadLocal 容器和事件侦听器的 hack 来解决这个问题,但我想知道当您使用业务/客户端 DTO 时,是否存在关于如何处理系统刷新后更新的属性的公认最佳实践。

任何想法或想法表示赞赏,谢谢,Shands

4

1 回答 1

0

如果实体将被多个客户端同时更新。它确实需要在您的客户端视图中保持最新版本。进行更改时需要刷新它(更新后重新加载)。

如果实体将仅由其所有者更新(而不是同时由多个用户)。您不需要保留最新版本的属性。当您在服务器端进行更新时。您可以加载存储的实体并设置需要使用您的 DTO 更新的属性,并且加载的 PO 可以在事务中自动更新。

于 2013-03-11T16:44:34.473 回答