帮助创建AspectJ equivellent到@PrePersist和@PreUpdate用于审计用例

时间:2011-02-06 02:07:27

标签: jpa jpa-2.0 aspectj aop aspects

在JPA中,有@PrePersist和@PreUpdate注释允许在CRUD操作之前进行操作。 我试图找出与此相当的ApsectJ。

我的用例是由一个团队构建的JPA应用程序,现在想要为每个Pre-Persist和Pre-Update添加一个Audit Aspect,而不向原始Entity添加生命周期监听器。

1 个答案:

答案 0 :(得分:2)

如果实体没有@PrePersist和@PreUpdate方法,您可以使用AspectJ intertype声明(ITD)来介绍这些方法。

public aspect Audit {
    declare parents: @Entity * implements AuditedEntity;

    public interface AuditedEntity {}

    @PrePersist
    public void AuditedEntity.prePersistAuditing() {
       ... auditing logic
    }

    ... similar code for @PreUpdate
}

如果实体已经拥有这些方法,您可以建议那些人进行审核。