2011-12-29 162 views
0

我是JPA的新手。我想弄清楚如何使用JPA实体生命周期事件作为数据库触发器的替代品。例如(Postgresql),除了在“更新前”数据库触发器(Postgresql)之外,它总是具有旧记录和新记录,其中包含更新前后的值。JPA实体生命周期事件vs数据库触发器

我无法找到有关JPA的文档。 Javadoc文档在PreUpdate注释中没有多说。

谢谢!

回答

0

JPA只是和研究生命周期,我认为我们需要具体到

实现的规范。 EJB Entity Beans/Hibernate Entity Beans等,它们都有自己的

生命周期模型。

0

生命周期事件是在JPA中定义的。 他们是:PerPersist,PostPersist,PreRemove,PostRemove,PreUpdate,PostUpdate和PostLoad。 您可以使用适当的注释(上述之一)在实体类中注释方法。 方法签名为

void someMethodName() 

它可以有任何访问修饰符。 对于在回调中可以执行的操作有许多限制,例如在实体管理器上调用方法。

特别在PreUpdate上:PreUpdate保证在更新db之前的某个时刻被调用,但是在什么时候什么都没有说。