java - Spring MVC : Where to place validation and how to validation entity references

标签 java spring spring-mvc validation

假设我有以下用于创建用户的命令 bean:

public class CreateUserCommand {

   private String userName;
   private String email;

   private Integer occupationId;
   pirvate Integer countryId;

}

occupationId 和 countryId 是在表单上下拉选择的值。它们映射到数据库中的实体(职业、国家)。

此命令对象将像这样被提供给服务外观:

userServiceFacade.createUser(CreateUserCommand 命令);

此外观将构造一个用户实体以发送到实际服务。所以我想在外观层我将不得不进行几次 dao 调用来映射用户实体的所有查找属性。

基于此,验证 occupationId 和 countryId 映射到真实实体的最佳策略是什么?执行此验证的最佳位置在哪里?有 spring validator ,但我不确定这是最好的地方,因为我对这种方法持谨慎态度,因为验证与 web 层相关联,但这也意味着我需要在 validator 中进行 dao 调用用于验证,但当发生命令 -> 实体转换时,我需要再次调用外观层中的 dao。

有什么我可以做得更好的吗?

谢谢。

最佳答案

您确定需要 DTO 来检索实体吗?

我想你的用户如下

public class User implements Serializable {

    private String userName;
    private String email;

    private Occupation occupation;
    private Country country;

}

通常,在显示表单时引用另一个实体是通过使用一些