我了解应用程序的多个层都需要验证。但是,如果要施加的验证在所有层上都是相同的(大多数时候都是这种情况),那么使用通用的验证框架是有意义的。这是 Hibernate Validator 的目标之一。
为了确保对象的有效状态,我计划将验证放在实体的设置器中。此外,我在实体上放置了注释约束,以便 Hibernate 可以在持久化之前使用它们来验证实体对象。然后,与其编写我自己的验证(本质上检查与 Hibernate 注释相同的约束),我为什么不应该在 setter 中使用 Validator 实例来验证属性。我可以用validator.validateProperty()
它。
但是,我担心的是性能。构建一个 ValidatorFactory 并在每个 setter 中获取一个验证器实例是一件昂贵的事情吗?还是我对性能考虑太多了?如果我不使用 Validator,那么我将选择 Apache Commons 库在 setter 中进行验证。
那么,哪种方式更好呢?