Выбор ответа Middle Spring Data JPA обновлено

Зачем проекции

Вопрос

Для списка заказов нужны только id и total, а у сущности 40 полей и связи. Что лучше вернуть из репозитория?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: DTO- или интерфейсную проекцию с двумя полями. Проекция выбирает только нужные колонки, не создаёт управляемые сущности и не грузит связи: меньше трафика, памяти и работы dirty checking.

Варианты ответа

  1. Сущности целиком и маппить в DTO в сервисе
  2. Object[] из native-запроса с двумя колонками
  3. DTO- или интерфейсную проекцию с двумя полямиправильный ответ
  4. Map<String, Object> с ключами id и total

Разбор

Проекция выбирает только нужные колонки, не создаёт управляемые сущности и не грузит связи: меньше трафика, памяти и работы dirty checking. Полные сущности ради двух полей расточительны. Object[] и Map работают, но без типизации и с ручным разбором.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.