【发布时间】:2020-09-25 06:13:12
【问题描述】:
我有点误会了。假设我有这样一个实体:
@Entity
public class Item {
private String description;
}
以及该实体的 DTO:
public class ItemDto {
private String description;
}
正如你已经了解的,所有控制器都只与 DTO 一起工作,即我从客户端部分获取 DTO,然后将其转换为实体,等等。所以,我决定验证 DTO:
public class ItemDto {
@Max(value = 100, message = "Description must not exceed 100 characters")
private String description;
}
验证效果很好,但我有一个问题:我是否也需要验证实体?我一直认为实体中用于验证的注释是没有用的,因为您仍然需要自己创建必要的表并设置必要的限制。但随之而来的问题是,实体是否应该与数据库中的表相对应?也就是说,例如,如果我在表中有一个字段的NOT NULL 约束,我是否也应该将@NotNull 注释放在实体中的该字段上? DTO 也不清楚。我正在验证 DTO,但这可能并不能保证完整的数据保护。换句话说,理论上,一些程序员可能会决定直接对实体做一些事情,但它没有得到验证。这一切都会导致错误。或者可能会出现这样的情况,在数据库中的表中设置了限制,而在实体中没有限制。也就是说,可以给实体赋值任意值,但是添加到数据库时出现错误。帮我处理一下情况。很抱歉,如果我没有很好地解释它。
【问题讨论】:
标签: java validation spring-mvc jpa bean-validation