Новости программирования

Преобразование объекта в DTO

Краткое описание по статье Преобразование объекта в DTO

Название: Преобразование объекта в DTO . Краткое описание: ⭐ В этом посте мы углубимся в сущности, DTO и их прео . Дата публикации: 26.01.2022 . Автор: Алишер Валеев .

Для чего создан сайт Novosti-Nedeli.ru

Данный сайт посвящен новостям мира и мира технологий . Также тут вы найдете руководства по различным девайсам.

Сколько лет сайту?

Возраст составляет 3 года


В этом посте мы углубимся в сущности, DTO и их преобразование с помощью популярной библиотеки ModelMapper.

Организация

По определению оракула

Сущность — это облегченный объект домена персистентности. Обычно сущность представляет собой таблицу в реляционной базе данных, и каждый экземпляр сущности соответствует строке в этой таблице. Основным артефактом программирования сущности является класс сущности, хотя сущности могут использовать вспомогательные классы.

Говоря упрощенным языком, сущность обычно представляет собой таблицу базы данных, отслеживание которой интересует систему. Короче говоря, сущность — это не что иное, как класс, сопоставленный с таблицей.
Например: учетные записи, сотрудники, отделы и т. д.

Давайте посмотрим на кодовое представление сущности. Рассмотрим класс отдела, представляющий таблицу базы данных.

@Entity
@Data
@Table
public class Department {

    @Id
    @Column
    @GeneratedValue(strategy = GenerationType.AUTO)
    long id;

    @Column
    String departmentName;

    @Column
    String departmentLevel;

}

ДТО

Согласно определению из Википедии

В области программирования объект передачи данных (DTO) — это объект, который переносит данные между процессами. Мотивация его использования заключается в том, что связь между процессами обычно осуществляется с помощью удаленных интерфейсов (например, веб-сервисов), где каждый вызов является дорогостоящей операцией. Поскольку большая часть стоимости каждого вызова связана со временем приема-передачи между клиентом и сервером, одним из способов сокращения количества вызовов является использование объекта (DTO), который объединяет данные, которые были бы переданы. несколькими звонками, но это обслуживается только одним звонком.

Проще говоря, шаблон проектирования объекта передачи данных — это шаблон проектирования, используемый для уменьшения количества вызовов с удаленными интерфейсами. DTO — это объект, который переносит данные между процессами. В идеале он не должен содержать никакой бизнес-логики, но DTO может содержать механизмы сериализации и десериализации.

Давайте посмотрим на представление DTO. Для простоты создания геттеров/сеттеров мы будем использовать библиотеку lombok.

package com.example.demo.dto;

import lombok.Data;

//lombok is used for creating getters/setters
@Data
public class DepartmentDTO {

    long id;

    String departmentName;

}

МОДЕЛЬКАППЕР

Проще говоря, МОДЕЛЬКАППЕР помогает нам автоматизировать процесс сопоставления сущностей с DTO и наоборот. Библиотека широко используется, поскольку позволяет избежать написания шаблонного кода для отображения. Основная цель библиотеки ModelMapper — определить, как один объект отображается на другой. Для получения дополнительной информации вы можете нажать здесь.

Мы рассмотрим это на простом примере, у нас есть сущность отдела и отдел ДТО, мы попробуем отобразить их с помощью модуля сопоставления моделей.

Давайте создадим сущность отдела с демонстрационными данными

//setting sample data to the department entity
Department dept = new Department();
dept.setId(1);
dept.setDepartmentName("HR Services");
dept.setDepartmentLevel("level-3");

Теперь давайте сопоставим сущность с DTO.

//using modelmapper library to map the department entity to department DTO
ModelMapper mapper = new ModelMapper();
DepartmentDTO deptDTO = mapper.map(dept, DepartmentDTO.class);

System.out.println(deptDTO);

ВЫВОД

DepartmentDTO(id=1, departmentName=HR Services)

Process finished with exit code 0

Мы можем видеть, что значение DepartmentLevel не было заполнено в нашем выводе, потому что оно не было упомянуто в нашем DTO. Следовательно, можно сделать вывод, что отображение сущности в DTO выполняется библиотекой ModelMapper.

Как преобразовать List в List?

Это можно сделать многими способами. Мы постараемся охватить некоторые из них с помощью ModelMapper.

Давайте создадим List, используя образцы данных,

List<Department> departmentList = new ArrayList<>();

//setting sample data to the department entity
Department dept1 = new Department();
dept1.setId(1);
dept1.setDepartmentName("HR Services");
dept1.setDepartmentLevel("level-3");

Department dept2 = new Department();
dept2.setId(2);
dept2.setDepartmentName("IT Services");
dept2.setDepartmentLevel("level-1");

// adding departments to the list
departmentList.add(dept1);
departmentList.add(dept2);

1) Использование TypeToken

В ModelMapper TypeToken используется для сопоставления универсальных параметризованных типов. Для получения дополнительной информации вы можете прочитать здесь.

Теперь, когда у нас есть список объектов, мы преобразуем его в список DTO.

ModelMapper mapper = new ModelMapper();

List<DepartmentDTO> deptDTO = mapper.map(departmentList, new TypeToken<List<DepartmentDTO>>(){}.getType());

System.out.println(deptDTO);

ВЫВОД

[DepartmentDTO(id=1, departmentName=HR Services), DepartmentDTO(id=2, departmentName=IT Services)]

Process finished with exit code 0

2) Использование массива

ModelMapper mapper = new ModelMapper();

List<DepartmentDTO> deptDTO = Arrays.asList(mapper.map(departmentList, DepartmentDTO[].class));

System.out.println(deptDTO);

ВЫВОД

[DepartmentDTO(id=1, departmentName=HR Services), DepartmentDTO(id=2, departmentName=IT Services)]

Process finished with exit code 0

Вывод:

Мы увидели, как легко мы можем сопоставить объект с другим, используя библиотеку ModelMapper. Кроме того, мы видели преобразование List в List, что чаще всего встречается при написании критически важных API.


Source: codementor.io/community/new

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован.

Кнопка «Наверх»