Помогите создать AspectJ, эквивалентный @PrePersist и @PreUpdate для случая использования аудита - PullRequest
0 голосов
/ 06 февраля 2011

В JPA есть аннотации @PrePersist и @PreUpdate, которые разрешают операции перед операциями CRUD.Я пытаюсь найти ApsectJ, эквивалентный этому.

Мой пример использования - это приложение JPA, созданное одной командой, и теперь я хотел бы добавить аспект аудита к каждому Pre-Persist и Pre-Updateпроисходит без добавления прослушивателя жизненного цикла к исходному объекту.

1 Ответ

2 голосов
/ 07 февраля 2011

Если у сущностей нет методов @PrePersist и @PreUpdate, вы можете использовать объявления типов Interpect (ITD) AspectJ для представления этих методов.

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

    public interface AuditedEntity {}

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

    ... similar code for @PreUpdate
}

Если у сущностей уже есть методы, вы можете посоветовать им выполнить аудит.

...