java - 在 hibernate 中使用 bean 验证

标签 java hibernate javabeans

我想知道是否可以在 hibernate 中使用 Java Bean Validation,以及它们如何相互集成。

我的数据层中有一个由 Jax-rs API 和 JPA 组成的堆栈。

我想知道我是否可以在不使用 Spring 的情况下使用 Java Bean 验证来验证我的 Hibernate 实体。

我可以同时使用来自 hibernate 的注解和来自 javax.validation.contraints 的注解吗

例如:

@Column(nullable = false)
@Size(min =8, max = 12)
@NotNull(message = "Phone Number must be entered")
private String phoneNumber;

这里我通过hibernate和bean验证指定我的列不能为null。

这是一个好的做法吗?

或者是否有替代方法来验证 hibernate 中的数据,而无需像这样的 bean 验证?

最佳答案

Bean Validation 规范集成了 Hibernate 和 JPA 2.x 规范的所有其他实现。我在我的文章 How to automatically validate entities with Hibernate Validator 中对此进行了非常详细的解释。 .

让我快速总结一下:

如果您将 Bean 验证规范的实现(例如 Hibernate Validator)添加到您的项目中,Hibernate 会在插入和更新实体之前自动触发验证。您可以自定义它并在删除实体之前触发验证。我在我的文章中对此进行了更详细的解释。

您可以使用 Bean 验证规范的所有功能(包括自定义验证规则)来验证您的实体属性。我用了那个 here验证实体属性的值是否在定义的范围内并且 here检查是否仅设置了 2 个关联中的一个。

您在问题中发布的示例映射是一个很好的做法! @Column(nullable = false) 部分不是绝对必要的,因为验证规则已经确保该属性不能为 null。

关于java - 在 hibernate 中使用 bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54457103/

相关文章:

java - Spring - 强制 bean 属性来自 post 变量

Spring boot - @Component注解创建两个相同类型的bean

java - 计时器未在预定时间被调用

java - 使用java代码通过smtp发送电子邮件

java - ExecutorService 中的持久变量 (Java)

spring - 是什么导致 Hibernate 选择上出现此 NullPointerException?

java - Spring MVC + Rest API - 无法延迟初始化集合

java - Spark : Saving filtered rows in FilterFunction

java - 检查预定义的字符串值 Hibernate Validator

java - 将 java bean 实现为 jsp servlet