Весна. Является ли более оптимальным использование проекций на основе интерфейса, чем проекций на основе классов (DTO)? - PullRequest
0 голосов
/ 07 сентября 2018

Так что я наткнулся на два варианта проекций: интерфейс против классов.

Мой вопрос: действительно ли лучше выбирать проекции на основе классов (использование DTO), чем интерфейс? Разве концепция DTO не сводится к извлечению только информации, а не самой сущности? Если да, то не является ли проекция интерфейса более подходящей для этого, поскольку это только интерфейс? Я говорю конечно, если это лучше для производительности или нет.

Заранее спасибо!

1 Ответ

0 голосов
/ 07 сентября 2018

получение только информации, а не самой сущности?

Если вам требуется только частичное содержимое сущности или сложные данные из нескольких таблиц, вам следует использовать DTO / проекцию.

разве интерфейсная проекция больше не подходит для этого, так как это только интерфейс?

Я предпочитаю использовать проекции на основе интерфейса , потому что у них есть некоторыепреимущества перед классами:

1) их легче реализовать (это просто интерфейс)

2) они могут быть открыты - поэтому мы можем расширить ихфункциональность

3) в нашем пользовательском запросе мы должны использовать конструктор проекции на основе классов, в отличие от интерфейса, сравните:

Query("select m.name as name from Model m") 
List<ModelProjection> getModelList();

Query("select new com.example.ModelDto(m.name) from Model m") 
List<ModelDto> getModelList();
...