JPA には、CRUD 操作の前に操作を許可する @PrePersist および @PreUpdate アノテーションがあります。これに相当する ApsectJ を見つけようとしています。
私のユース ケースは、1 つのチームによって構築された JPA アプリケーションであり、元のエンティティにライフサイクル リスナーを追加せずに、発生する各 Pre-Persist および Pre-Update に監査アスペクトを追加したいと考えています。
エンティティに@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
}
エンティティにすでにメソッドがある場合は、監査を実行するようにエンティティにアドバイスできます。