TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #1737 2.38K
В работе с 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": "sumit@email.com" }


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

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

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

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

👉 Java Portal
  • ❤ 10
  • 👍 7
  • 💊 1
More from @java_iibrary
  1. Sep 29, 2026Большинство Java-разработчиков используют эти термины каждый день. Удивительно, но многие…
  2. Sep 28, 2026💡 Java: не создавайте ресурсоёмкие объекты, пока они действительно не понадобятся. ✅ Иниц…
  3. Sep 28, 2026Проблема в продакшене. Приложение зависло. Вы запускаете: jstack <pid> Через несколько сек…
  4. Sep 27, 2026Java-разработчики, CopyOnWriteArrayList создаёт копию всего внутреннего массива при каждом…
  5. Sep 27, 2026Java-разработчики, ConcurrentHashMap потокобезопасен. Но он не блокирует всю коллекцию при…
  6. Sep 26, 2026Во многих приложениях есть такой эндпоинт. Фронтенд удаляет JWT после того, как пользовате…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →