【发布时间】:2013-01-18 14:50:57
【问题描述】:
我通过将 GET 中的版本号传递回 PUT 调用,为我的 REST 资源实现了乐观锁定,这些资源具有与数据库表的一对一映射。如果在我执行 GET 和 PUT 之间数据库中的版本号发生了变化,那么就发生了乐观锁异常。很简单的设计。
现在,我如何对映射到多个数据库表的复合 REST 资源执行相同的操作?我不想回传多个版本字段(一个用于与复合资源相关的每个数据表)。复合资源的一个简单示例是 /FooBar,其中 /Foo 和 /Bar 是非复合资源。
我基本上是在寻找 Fowler 粗粒度锁定模式的 REST 实现示例:http://martinfowler.com/eaaCatalog/coarseGrainedLock.html
【问题讨论】:
-
在您的 REST 服务中,您是否可以只收集版本并将它们放入一个 Map 中,该 Map 由唯一生成的表示版本的 id 键入?然后将其发送给客户并让他们在编辑后将其发回给您?然后,您可以使用该 id 来获取实体图的版本。
标签: java rest optimistic-locking