Подход DTO
Pro
Con
Это приведет к увеличению количества кода, так как вам придется создавать класс DTO с помощью конструктора и методов получения / установки (если вы не используете Project Lombok, чтобы избежать шаблонов)
код для DTO).
Вложенные проекции не могут быть применены.
Проекция
Pro
Меньше кода, поскольку используются только интерфейсы.
Могут применяться вложенные проекции
Динамическая проекция позволяет вам написать один общий метод репозитория для возврата
различное подмножество атрибутов в объекте объекта в зависимости от потребностей клиента.
Con
- Spring генерирует прокси во время выполнения
- Запрос может вернуть весь объект сущности из базы данных в слой Spring, хотя урезанная версия (через проекцию) возвращается из слоя Spring в клиент. Я не был уверен в этом конкретном недостатке, надеясь, что кто-то отредактирует этот ответ в случае необходимости.
Если вам нужна вложенная или динамическая проекция, вам, вероятно, нужен подход Projection, а не DTO.
Подробнее см. официальный документ Spring .