gpt4 book ai didi

java - JSR-303 和 JPA 重叠

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:29 24 4
gpt4 key购买 nike

嘿嘿!

我已经使用了 JPA 注释,现在我想使用 JSR-303 注释来验证属性。

我的问题是,它们之间的互动情况如何?
如果我使用 @Basic(optional=false)@NotNull,我是否仍必须使用 nullable=false 等?

我还没有决定使用哪个 validator 实现,例如hibernate-validator 或 oVal(您也可以建议其他人。我知道 oVal is not a JSR-303 implementation, but it maps most annotations)。

oVal 手册(见上文)声明某些 JPA 注释也将被转换为 oVal 注释。 hibernate validator has a similar mechanism .

一些搜索结果声称 Bean Validation 和 JPA 确实正式重叠,但我还没有想出确切的重叠方式。

最佳答案

它们都是运行时检查。虽然有一些区别
JPA 规范声明 @Basic(optional = false) 可以用作模式提示,即如果您通过 JPA 更新数据库模式(虽然通常不是一个好的做法),您可以使用它来指示此列值不能为 null,必须有一个值。

Section 9.1.18 Basic Annotation of JPA1 specification

Section 11.1.6 Basic Annotation of JPA2 specification

明确指出。

除此之外,两者都会在将 sql 发送到数据库之前进行运行时检查。
通常在将 SQL 发送到服务器之前进行验证,如果您使用的是 JSR 303,其中还包括许多其他检查,您将使用 @NotNull 但是您可能没有使用 JSR 303,在这种情况下您可以使用 @Basic(optional = false) 甚至在 JSR 303 之前就已出现,但并不优于 JSR303。
您现在可能想知道 @Column(nullable = false) 纯粹用于数据库端。
您是否应该同时使用两者 - 只有当您允许 JPA 更新架构时才可以,否则 JSR-303 优于另一个。

关于java - JSR-303 和 JPA 重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com