【问题标题】:Entity Model or Pojo Class as a return object of REST API实体模型或 Pojo 类作为 REST API 的返回对象
【发布时间】:2019-12-09 14:53:05
【问题描述】:
我正在使用 REST API,
如果直接将模型类对象列表作为对用户的响应,是否有任何错误。
还是我需要在返回之前将那些实际模型类映射到任何 POJA 类?
例如:
如果 API 忘记了所有用户(“/Users”)
那么直接返回是不是一个好的编码方式
return userRepository.findAll();
或者需要在返回之前将其转换为任何List<UserPOJO>?
或者有什么好的编码标准吗?
【问题讨论】:
标签:
java
hibernate
rest
spring-boot
jpa
【解决方案1】:
根据我的经验,通常最好将实体映射到等效的 POJO 类。
这里有几个原因:
1) 大多数时候,您不需要存储在实体中的所有数据。您只能映射响应中所需的子集。
2) 从安全的角度来看,有某种中间立场总是好的,您可以在其中过滤掉实际上不应该放入响应中的敏感数据。或者仅适用于您可以在映射期间决定的某些用户。
3) Hibernate 对象不是普通对象,它们是代理。这可能会导致不必要的延迟加载,例如 @OneToMany 和 @ManyToMany 关系。你应该能够控制它,根据我的经验,杰克逊会加载所有可能的东西,除非你用 @JsonIgnore 注释它。
除非您正在使用一个非常简单且安全性不高的应用程序,否则我将继续使用 Hibernate 对象。但除此之外,在大多数情况下,我会选择映射。