经过数月的打磨,我们很高兴发布 Hibernate Validator 4。这是 Hibernate Validator 的一个重要里程碑,带来了大量新特性和规范兼容性。
对于新用户
Hibernate Validator 允许您使用注解如@NotNull或@Size在领域模型上声明约束,并返回对象图中找到的约束失败列表。而不是在各个应用层中重复约束声明,约束集中在您的领域模型上,并由所有层和框架共享:一次声明,任何地方验证。
有什么新功能和亮点?
Hibernate Validator 是一个全新的重写,具有许多新功能。让我描述其中的一些
- 约束组合:自定义约束可以由较小的约束组合而成,避免代码重复,提高可读性,并提高可移植性,尤其是在与内置约束集结合使用时。
- 组:组允许您定义您希望在给定时间验证的约束子集。在许多情况下很有用,如部分填充的数据、检查对象的状态(这个用户能否一键购买?)、排序约束验证。而且组不仅仅是字符串,它们是建立在 Java 接口之上的类型安全结构。
- 类型安全的约束声明:Hibernate Validator 4 确保设置在属性上的约束与属性的兼容性。这甚至可以在理论上在编译时进行检查。
- 更强大的自定义约束:与以前一样容易,但比以前更强大。现在您可以自定义自定义约束报告的违反消息,并在需要时返回多个违反。一个违反可以指向子属性(对跨属性验证很有用)。
- 与 JPA 2 和 JSF 2 的原生集成:由于 Hibernate Validator 4 符合 Bean Validation,因此它与 Java 持久性 2 和 Java 服务器面相 2 原生集成。这种集成正在 JBoss AS 5.2 中进行。使用 Seam 和 Hibernate Core 的人已经熟悉这种集成风格,因为 Hibernate Validator 3。
- 流畅的类型安全引导API:您可以使用新的引导API来优化Hibernate Validator的许多方面,例如消息插值逻辑。
- 元数据API:需要查询领域模型约束的框架可以使用元数据API。例如,Hibernate Core使用它将约束传播到数据库模式。
- XML:XML配置可以与注解或代替注解一起使用,例如根据部署环境重新定义某些约束。
- 大幅改进的测试套件:我们已完全重写了测试套件,现在它是规范TCK的基础。
- 符合JSR-303 Bean Validation:最后但同样重要的是,Hibernate Validator 4是参考实现,我们无法让它更合规了;)实际上,对于您来说,这意味着您针对规范API编写代码,这使得您的代码更易于移植,并且如果它们集成了Bean Validation(例如Java EE 6所做的那样),则您的约束将可供整个Java生态系统可见。
当然,还有许多其他新功能,请查看以下文档这里。您可以从这里下载Hibernate Validator 4,并在我们的论坛上联系我们。
第二个好消息是Bean Validation规范现在已经完成。我今天将把它交给JCP进行最终批准投票。关于这一点,几天后我会提供更多信息。
非常感谢Hardy,Hibernate Validator 4实现背后的那个人,他处理了上个月/天/分钟/秒对规范的增强。特别感谢Gunnar Morling和Alaa Nassef,尽管有些行政上的小波折,他们还是做出了贡献:)