播放ebean的并发更新:avaje.ebean.Model.save()

时间:2016-05-20 15:59:10

标签: playframework ebean

名为Customer的实体具有“名称”,“年龄”为字段。

cust1在数据库中有'Sammy','23'的值

如何处理以下情况?

  1. 线程1&线程2查询cust1
  2. 线程1将Name修改为'Manny',将Age修改为'25'并触发cust1.save()
  3. 线程2仅将Age修改为'27'并触发cust1.save()
  4. 数据库中的结果条目是什么?

    1. 曼尼,27岁

      OR
    2. Sammy,27岁(因为线程2已将名称检索为'Sammy'且仅更新年龄)
    3. 我猜答案是1,原因是eBean总是返回一个对象的同一个实例,如果一个对象已经存在于持久化上下文中。如果这是真的,那么eBean如何管理多个线程对同一对象的并发更新?如果在上面的例子中,两个线程试图同时改变'age'怎么办?

0 个答案:

没有答案