将对象化将未更改的项目重新保存到数据存储区
Will objectify re-save an unchanged item to datastore
假设我使用对象化 load()
数据存储中的实体,然后 "modify" 属性,然后 save()
将其返回数据存储。
让我们假设没有 属性 发生变化,例如属性 是 "overwritten" 之前的值。
objectify 仍会执行 save()
或足够聪明以意识到没有真正的更改并省略保存。
换句话说:objectify 是否仅因为我写了 属性 就假设有变化,或者它会实际查看 属性 以确定是否有 material改变?
简而言之,您的问题是:Objectify 是否提供脏变化检测?
不,不是。至少目前没有。有时这有点烦人,尤其是当您想调用多个可能更改对象的方法时 - 您不想执行多次保存。
我已经开始在我的实体中编写这样的代码:
public void setFoo(final String value) {
if (!Objects.equals(this.foo, value)) {
this.foo = value;
ofy().defer().save().entity(this);
}
}
这是一种穷人的脏变化检测。
假设我使用对象化 load()
数据存储中的实体,然后 "modify" 属性,然后 save()
将其返回数据存储。
让我们假设没有 属性 发生变化,例如属性 是 "overwritten" 之前的值。
objectify 仍会执行 save()
或足够聪明以意识到没有真正的更改并省略保存。
换句话说:objectify 是否仅因为我写了 属性 就假设有变化,或者它会实际查看 属性 以确定是否有 material改变?
简而言之,您的问题是:Objectify 是否提供脏变化检测?
不,不是。至少目前没有。有时这有点烦人,尤其是当您想调用多个可能更改对象的方法时 - 您不想执行多次保存。
我已经开始在我的实体中编写这样的代码:
public void setFoo(final String value) {
if (!Objects.equals(this.foo, value)) {
this.foo = value;
ofy().defer().save().entity(this);
}
}
这是一种穷人的脏变化检测。