【问题标题】:Is it possible to call validation methods any time before saving the object是否可以在保存对象之前随时调用验证方法
【发布时间】:2011-09-10 08:36:16
【问题描述】:

在 ActiveRecord 中,可以检查对象的状态在某个时间点是否有效。

>> foo.valid?
=> false

有没有办法在 JPA2 中做类似的事情,因为验证框架实际上是在保存之前在 JPA 中触发的 |更新

【问题讨论】:

    标签: hibernate activerecord jpa jpa-2.0


    【解决方案1】:

    是的,您可以创建在不同事件发生时触发的事件侦听器,例如在实体被持久化、修改等之前。

    这是一个基本用法

    • 在您的实体 bean 中创建一个方法
    • 使用@PrePersist、@PostPersist 注释之一对其进行注释
    • 该方法中的代码将在 bean 中的那个(那些)生命周期事件中被调用

    您还可以在单​​独的类中创建回调逻辑,并通过类级别注释 (@EntityListeners) 将这些侦听器附加到实体 bean。

    这里有很多关于调用这些侦听器的顺序、继承它们等的内容,在这里进行详细说明。查一下。

    【讨论】:

    • 我知道验证框架,我的问题是我是否能够在保存对象之前的任何时间点调用一些方法来查看对象是否有效。在 Rails 中可以,但在 JPA2 中可以吗?
    • 好吧,如果您真的了解验证框架,那么您就会了解 Java EE 6 验证 API,以及它(以及其他)Hibernate 验证实现。这个家伙带有许多不同的验证器,您可以通过简单地注释您的字段/类来启用它们,它让您可以非常轻松地创建自定义验证器。最后,您可以随时要求它验证您的 bean。真的,你认为 Rails 比 Java 有更多的选项/库吗?真的吗?
    • 只是想确认可以随时调用bean验证。我毫不怀疑 java 验证框架的实力,我一生都在使用它,但我不确定这种能力。
    猜你喜欢
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多