Java Pojos — обнаружение вызова сеттера (прикосновение к полю)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java Pojos — обнаружение вызова сеттера (прикосновение к полю)

Сообщение Anonymous »

Pojos часто используются в качестве моделей/DTO для вставки/обновления данных в базу данных.
Их необходимо проверить (с помощью валидатора), чтобы убедиться, что они содержат только ожидаемые поля. для варианта использования:
  • вставить (все поля должны быть проверены и вставлены)
  • обновить (только изменено/ измененные поля должны быть проверены и обновлены в базе данных)
Чтобы сделать это возможным, было бы полезно, если бы язык Java уже содержал механизм отслеживания «модифицированный» в pojos. «Измененным» для поля будет:
  • вызван установщик для поля.
Может ли кто-нибудь помочь мне решить такое обнаружение вызовов сеттера, используя как можно меньше шаблонов?

Вот пример того, как я решил это с помощью шаблона, позволив Pojos расширить общий класс:
public abstract class AbstractDTO {

private Map modifiedFields = new HashMap();

public AbstractDTO() {
}

@JsonIgnore
@XmlTransient
protected void setAt(String key, Object value) {
this.modifiedFields.put(key, value);
}

@JsonIgnore
@XmlTransient
public void resetModifiedFields() {
this.modifiedFields.clear();
}

@JsonIgnore
@XmlTransient
public Map getModifiedFields() {
return this.modifiedFields;
}
}

Реализация:
public class Product extends AbstractDTO {

private Long productId;

public Long getProductId() {
return this.productId;
}

public void setProductId(Long productId) {
this.productId = productId;
this.setAt("productId", productId);
}

Таким образом, теперь я могу проверять наличие измененных полей:
boolean isModified = pojo.getModifiedFields().containsKey(field.getName());


Подробнее здесь: https://stackoverflow.com/questions/782 ... -detection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»