Spring MVC - 控制序列化哪些实体字段
Spring MVC - Controlling which Entity fields are serialized
我目前直接使用我的实体作为我的控制器方法(与 DTO 相反)的响应类型和请求参数。我希望从响应中过滤掉一些字段,更好的做法是使用 @JsonIgnore 注释我的实体 中的那些字段 class (从而使我的模型混乱)或创建一个 DTO 专门用于必填字段。从设计的角度来看,哪种方法更好?
最好创建DTO。原因很简单,如果你 return 实体你可以从数据库中提取大量数据(取决于你的 JPA 注释 - @Lazy,@Eager 注释),如果你 return DTO,你总是可以 return 只有您需要的数据。
@JsonIgnore 注释将始终从序列化中排除 属性,但有时您想要 属性(针对某些特定请求),然后您就有问题了。这是 DTO 可以帮助你的简单情况,因为你可以根据需要创建它,你想要哪些字段。
我目前直接使用我的实体作为我的控制器方法(与 DTO 相反)的响应类型和请求参数。我希望从响应中过滤掉一些字段,更好的做法是使用 @JsonIgnore 注释我的实体 中的那些字段 class (从而使我的模型混乱)或创建一个 DTO 专门用于必填字段。从设计的角度来看,哪种方法更好?
最好创建DTO。原因很简单,如果你 return 实体你可以从数据库中提取大量数据(取决于你的 JPA 注释 - @Lazy,@Eager 注释),如果你 return DTO,你总是可以 return 只有您需要的数据。
@JsonIgnore 注释将始终从序列化中排除 属性,但有时您想要 属性(针对某些特定请求),然后您就有问题了。这是 DTO 可以帮助你的简单情况,因为你可以根据需要创建它,你想要哪些字段。