Easydto

Что такое DTO и зачем?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

DTO (Data Transfer Object) — объект для передачи данных между слоями, особенно через API границы. Отделяет domain entity от presentation/API contract.

// DTO — record, явный contract
public record UserDTO(Long id, String name, String email) {}

// Spring Data JPA projection — генерирует impl
public interface UserProjection {
    Long getId();
    String getName();
}

Проблемы без DTO:

  • Hibernate proxy → LazyInitializationException при JSON-сериализации;
  • API раскрывает внутреннюю структуру БД;
  • нельзя изменить entity, не сломав API;
  • разные endpoints требуют разные subsets данных.

Mapping: вручную (boilerplate), ModelMapper (reflection), MapStruct (compile-time, type-safe — preferred), JPA projection. Для REST API — DTO обязательно, не возвращать entity.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.