审计对JPA实体的访问



我有一个JPA 实体,其属性和几个NamedQueries

我试图记录一些信息"任何时候实体被用于",即:

  • 任何时候它的NamedQueries被调用
  • 任何时候在查询中使用实体q = em.createQuery("SELECT.... . net ")FROM thisEntity a, otherEntity b WHERE.....");
  • 任何时候访问它的任何属性

我想记录的信息必须包括调用程序类名调用程序方法等。

我想这必须通过拦截器来实现,但我不确定,例如,如果拦截器允许我拦截对类抛出其NamedQueries的访问

你可以在实体类中使用@PrePersist, @PostPersist, @PostLoad, @PreUpdate, @PostUpdate, @PreRemove, @PostRemove等回调方法来实现。例如

public class EntityA {
    ...
    @PrePersist
    public void beforePersist(){
        //Log information
    }
}

另外,你可以在监听器类中使用回调方法。

public class EntityListenerA{
    @PrePersist
    public void beforePersist(EntityA ob) {
        //Log information
    }
}
@EntityListeners(EntityListenerA.class)
public class EntityA {
    ...
}

在你的情况下,我认为你必须使用回调@PostLoad取决于查询。

希望对您有所帮助

相关内容

  • 没有找到相关文章

最新更新