那Entity上不校验吗?
是的,Entity(实体)上通常也需要进行校验,但校验的方式和目的与DTO(数据传输对象)有所不同。
简单来说:Entity层的校验更侧重于数据完整性,而DTO层的校验更侧重于业务逻辑和用户交互。
-
Entity校验(数据层):主要使用像
@NotNull、@Size这类注解,确保数据库写入的数据不会出错(比如用户名不能为null、长度不超过255)。这更像是一种“兜底”保护。 -
DTO校验(业务层):更灵活,会根据具体业务场景加更多规则(比如“注册时密码必须包含字母和数字”),并且校验失败时的提示信息会更友好。
很多项目的做法是:在DTO层做完整的业务校验,把校验通过的数据传递给Entity,Entity本身只做基础的数据约束。这样能避免重复校验,也让代码更清晰。