客观化会将未更改的项目重新保存到数据存储区

时间:2016-05-17 18:42:08

标签: google-app-engine objectify

我们说我使用objectify从数据存储区load()实体,然后"修改"属性,然后save()返回数据存储区。

假设没有任何属性发生变化,例如一个财产已被覆盖"用它的先前价值。

客观化仍然会执行save()或者足够聪明,意识到没有真正的变化而忽略了保存。

换句话说:客体化是否假设存在变化只是因为我写了一个属性,或者它是否会实际查看属性以确定是否存在重大变化?

1 个答案:

答案 0 :(得分:2)

简而言之,您的问题是:Objectify是否提供脏变化检测?

不,它没有。至少目前不是。这有点令人讨厌,特别是当你想调用几个可能改变对象的方法时 - 你不想执行多次保存。

我已经在我的实体中编写了这样的代码:

public void setFoo(final String value) {
    if (!Objects.equals(this.foo, value)) {
        this.foo = value;
        ofy().defer().save().entity(this);
    }
}

这是一种穷人肮脏的变化检测。