从JPA迁移到MongoDb时,您开始认识到您以前认为理所当然的JPA功能有多少。 JPA通过悲观锁定和乐观锁定来防止“丢失的更新”。 乐观锁定不会最终锁定任何东西,而最好将其命名为无乐观锁定或乐观并发控制,因为无论如何它都是这样做的。
那么,“丢失更新”是什么意思?
一个真实的例子是多个后台任务更新某个公共实体的不同属性时。
在我们的示例中,我们有一个带有数量和折扣的产品实体,它们由两个单独的批处理者解决。
- 库存批次以{数量:1,折扣:0}加载产品
- 库存会更改数量,因此我们有{数量:5,折扣:0}
- 折扣批次以{数量ÿ