【发布时间】:2019-05-31 04:57:39
【问题描述】:
考虑到 PetClinic Res API 的经典示例,我有 2 个 REST 调用:
- GET /petclinic/owners
- GET /petclinic/owners/[SOME_ID]
第一次调用返回所有所有者(详细),第二次返回特定所有者详细信息。
在这两种情况下,每个所有者对象都包含所有者的基本详细信息以及宠物列表,每个宠物还包含访问次数
如果我想返回没有宠物的所有者列表并访问我的 findAll(第一个 API)调用的详细信息并为第二次调用提供完整的详细信息,最好的方法是什么??
我已经探索了 custom serializer 实现,但我不想在实体级别应用它。如果我使用杰克逊手动准备 JSON,它仍然会进行数据库调用!在第一次 REST 调用的情况下,我基本上想避免不必要的数据库获取
【问题讨论】:
-
我认为你必须定义主人和宠物之间的惰性关联
-
@GovindParasha 你在说“fetchType”吗? OneToMany 关联默认情况下已经是 LAZY 了!!
-
我曾经通过 orika mapper 转换成 DTO 然后返回
-
如果您希望 Spring Data 仅在后台处理从数据库中加载必要的属性,那么projections 是您的最佳选择
-
@GovindParashar 您对 Orika 的评论一开始没有意义,但现在当我意识到“mapstruct”时,您的回答也很有意义。
标签: spring hibernate spring-mvc spring-data-jpa spring-rest