Можем ли мы преобразовать сущность в объект dto / pojo внутренне? - PullRequest
2 голосов
/ 15 мая 2019

Есть ли какой-нибудь подход для частичного преобразования объекта в объект dto?Или есть ли лучшие практики для использования объекта, pojo / dto и объекта ответа в шаблоне MVC?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Одним из возможных подходов является конструктор копирования.Пример ниже.

// entity annotations ...
public class EntityExample {

    private Long id;
    private String name;
    private Integer score;

    // getters and setters ...
}


public class DtoExample {
    private Long id;
    pricate String name;

    // For serialization and deserialization
    public DtoExample() {

    }

    public DtoExample(EntityExample entity) {
        this.id = entity.getId();
        this.name = entity.getName();
    }

    // getters and setters ...
}
0 голосов
/ 15 мая 2019

У вас есть пара подходов.Я предполагаю, что у вас есть веб-проект.

  1. Подход с ручным отображением. Создайте D, чтобы сопоставить его вручную с вашей сущностью.Это будет включать в себя весь стандартный код вокруг него - строители, все аргументы конструктор, геттеры, сеттеры любой подход, который вы будете использовать для заполнения DTO.Разные методы гидратации применяются в разных ситуациях.Шаблон Builder предполагает наличие неизменных объектов.Геттеры и сеттеры поддерживаются такими системами как Джексон.Вы можете решить свести к минимуму свой стандартный код, используя lombok, imutables или другие фреймворки.
  2. Mapping framework .Другим вариантом может быть использование поставляемого сопоставления, такого как ObjectMapper или FastMap, возможны другие варианты.Это приведет к удалению большой части ручного отображения, которое вам нужно будет установить при следующем подходе 1.
  3. Десериализатор .Примером такого подхода может быть spring-data-rest , где ваш репозиторий возвращает сущности прямо, которые затем сериализуются в JSON.Используя обычный пружинный MVC, это будет означать, что ваша сущность будет возвращена прямо на уровень вашего контроллера и на основе аннотаций или других средств (сериализаторов) отобразит ее в сетевой формат JSON, XML, что вы используете.

Это разные варианты.Какой из них лучше, зависит от вашего варианта использования.

...