所以我偶然发现了两个投影选择,即接口与类。
我的问题是,选择基于类的投影(使用DTO)真的比接口好吗? DTO的概念不是只检索信息而不是实体本身吗?如果是,那么接口投影不是仅因为接口而更适合该投影吗?我说的当然是性能更好还是不好。
谢谢!
答案 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();