Будет объективизировать повторно сохранить неизмененный элемент в хранилище данных
Допустим, я использую objectify для load()
сущность из хранилища данных, затем "изменить" свойства, затем save()
это обратно в хранилище данных.
Давайте предположим, что ни одно свойство не изменилось, например свойство было "перезаписано" его предыдущим значением.
Будет объективировать еще выполнить save()
или достаточно умен, чтобы понять, что никаких реальных изменений не было, и не сохранять.
Другими словами: предполагает ли objectify, что есть изменение, только потому, что я пишу свойство, или оно действительно будет смотреть на свойство, чтобы определить, произошло ли существенное изменение?
1 ответ
Короче говоря, ваш вопрос: обеспечивает ли Objectify обнаружение грязных изменений?
Нет, это не так. По крайней мере, в настоящее время. Иногда это немного раздражает, особенно когда вы хотите вызвать несколько методов, которые могут изменить объект - вы не хотите выполнять несколько сохранений.
Я взял написание кода, как это в моих сущностях:
public void setFoo(final String value) {
if (!Objects.equals(this.foo, value)) {
this.foo = value;
ofy().defer().save().entity(this);
}
}
Что является своего рода обнаружением грязных изменений бедняка.