那Entity上不校验吗?

是的,Entity(实体)上通常也需要进行校验,但校验的方式和目的与DTO(数据传输对象)有所不同。

简单来说:Entity层的校验更侧重于数据完整性,而DTO层的校验更侧重于业务逻辑和用户交互

  • Entity校验(数据层):主要使用像 @NotNull@Size 这类注解,确保数据库写入的数据不会出错(比如用户名不能为null、长度不超过255)。这更像是一种“兜底”保护。

  • DTO校验(业务层):更灵活,会根据具体业务场景加更多规则(比如“注册时密码必须包含字母和数字”),并且校验失败时的提示信息会更友好。

很多项目的做法是:在DTO层做完整的业务校验,把校验通过的数据传递给Entity,Entity本身只做基础的数据约束。这样能避免重复校验,也让代码更清晰。