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 подскажет развёрнутый ответ в реальном времени.