JAVA_IIBRARY Telegram 1737
В работе с API на Spring Boot часто встречаются три термина: DTO, ModelMapper, Jackson. Разберём, что это и зачем нужно.

1. DTO

DTO это простой Java-класс, который используется для передачи данных между слоями (Controller <-> Service <-> Client).

Почему не использовать Entity напрямую?

- В Entity часто есть лишние поля (ID из БД, служебные поля аудита), которые клиенту видеть не нужно.
- Можно случайно засветить чувствительные данные.
- DTO позволяет держать API-контракты стабильными, даже если структура базы поменялась.

Пример DTO:

class UserDTO {
private String name;
private String email;
}


2. ModelMapper

ModelMapper это библиотека для автоматического маппинга DTO <-> Entity.

Без него пришлось бы вручную писать:

dto.setName(entity.getName());
dto.setEmail(entity.getEmail());


С ModelMapper это превращается в:

UserDTO dto = modelMapper.map(userEntity, UserDTO.class);


Плюсы: меньше шаблонного кода.
Минусы: для сложных кейсов нужна настройка, а ещё можно легко пропустить баг в маппинге, если полагаться только на автоматику.

3. Jackson

Jackson это библиотека, которую Spring Boot использует для (де)сериализации JSON.

Что делает:

- Превращает Java-объекты в JSON (ответ API).
- Превращает JSON в Java-объекты (тело запроса).

Пример:

{ "name": "Sumit", "email": "[email protected]" }


автоматически маппится в UserDTO в контроллере.

Как они работают вместе:

- Jackson: JSON <-> DTO
- ModelMapper: DTO <-> Entity
- DTO: слой-контракт между внешними клиентами и внутренними моделями

DTO защищает доменную модель, Jackson работает с JSON, а ModelMapper убирает рутину маппинга.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7



tgoop.com/Java_Iibrary/1737
Create:
Last Update:

В работе с API на Spring Boot часто встречаются три термина: DTO, ModelMapper, Jackson. Разберём, что это и зачем нужно.

1. DTO

DTO это простой Java-класс, который используется для передачи данных между слоями (Controller <-> Service <-> Client).

Почему не использовать Entity напрямую?

- В Entity часто есть лишние поля (ID из БД, служебные поля аудита), которые клиенту видеть не нужно.
- Можно случайно засветить чувствительные данные.
- DTO позволяет держать API-контракты стабильными, даже если структура базы поменялась.

Пример DTO:

class UserDTO {
private String name;
private String email;
}


2. ModelMapper

ModelMapper это библиотека для автоматического маппинга DTO <-> Entity.

Без него пришлось бы вручную писать:

dto.setName(entity.getName());
dto.setEmail(entity.getEmail());


С ModelMapper это превращается в:

UserDTO dto = modelMapper.map(userEntity, UserDTO.class);


Плюсы: меньше шаблонного кода.
Минусы: для сложных кейсов нужна настройка, а ещё можно легко пропустить баг в маппинге, если полагаться только на автоматику.

3. Jackson

Jackson это библиотека, которую Spring Boot использует для (де)сериализации JSON.

Что делает:

- Превращает Java-объекты в JSON (ответ API).
- Превращает JSON в Java-объекты (тело запроса).

Пример:

{ "name": "Sumit", "email": "[email protected]" }


автоматически маппится в UserDTO в контроллере.

Как они работают вместе:

- Jackson: JSON <-> DTO
- ModelMapper: DTO <-> Entity
- DTO: слой-контракт между внешними клиентами и внутренними моделями

DTO защищает доменную модель, Jackson работает с JSON, а ModelMapper убирает рутину маппинга.

👉 Java Portal

BY Java Portal | Программирование


Share with your friend now:
tgoop.com/Java_Iibrary/1737

View MORE
Open in Telegram


Telegram News

Date: |

Add up to 50 administrators Your posting frequency depends on the topic of your channel. If you have a news channel, it’s OK to publish new content every day (or even every hour). For other industries, stick with 2-3 large posts a week. Matt Hussey, editorial director at NEAR Protocol also responded to this news with “#meIRL”. Just as you search “Bear Market Screaming” in Telegram, you will see a Pepe frog yelling as the group’s featured image. bank east asia october 20 kowloon Step-by-step tutorial on desktop:
from us


Telegram Java Portal | Программирование
FROM American