2011-02-06 42 views
0

在JPA中,有@PrePersist和@PreUpdate批註允許在CRUD操作之前進行操作。 我正試圖找出相當於此的ApsectJ。幫助爲審計用例創建AspectJ等同於@PrePersist和@PreUpdate

我的用例是一個由一個團隊構建的JPA應用程序,現在想爲每個發生的Pre-Persist和Pre-Update添加一個Audit Aspect,而無需向原始實體添加生命週期偵聽器。

回答

2

如果實體沒有@PrePersist和@PreUpdate方法,那麼可以使用AspectJ的類型聲明(ITD)來引入這些方法。

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

    public interface AuditedEntity {} 

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

    ... similar code for @PreUpdate 
} 

如果實體已經有方法,您可以建議那些執行審計。