春季-使用基于接口的投影是否比基于类的投影(DTO)更合适?

时间:2018-09-07 05:53:05

标签: java spring spring-mvc spring-boot spring-data

所以我偶然发现了两个投影选择,即接口与类。

我的问题是,选择基于类的投影(使用DTO)真的比接口好吗? DTO的概念不是只检索信息而不是实体本身吗?如果是,那么接口投影不是仅因为接口而更适合该投影吗?我说的当然是性能更好还是不好。

谢谢!

1 个答案:

答案 0 :(得分:2)

  

只获取信息而不是实体本身?

如果您只需要实体的部分内容或来自多个表的复杂数据,则应使用DTO /投影。

  

接口投影不是更适合它吗,因为它只是一个接口?

我更喜欢使用interface-based projections,因为它们比基于类的具有某些优势:

1)它们更易于实现(只是一个接口)

2)它们可以是open-因此我们可以扩展其功能

3)我们必须在您的自定义查询中使用constructor基于类的投影,与基于接口的比较不同:

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();