Java 正在尝试在my Play framework应用程序中实施审核

Java 正在尝试在my Play framework应用程序中实施审核,java,hibernate,jpa,playframework,Java,Hibernate,Jpa,Playframework,为了找到与JPA和Java/Play集成良好的审计库,我做了大量的研究 我发现没有简单易用的东西(我可能错了)。然而,我发现: 我实现了一个简单的AuditListener类,它有两个简单的方法: @PrePersist public void prePersist(Object object) { if(object instanceof MyObj){ MyObj brand = (MyObj) object; Log

为了找到与JPA和Java/Play集成良好的审计库,我做了大量的研究

我发现没有简单易用的东西(我可能错了)。然而,我发现:

我实现了一个简单的AuditListener类,它有两个简单的方法:

@PrePersist
    public void prePersist(Object object) {
        if(object instanceof MyObj){
            MyObj brand = (MyObj) object;
            Logger.info("waaaa " + br.toString());
        }
    }

@PreUpdate
    public void preUpdate(Object object) {
        if(object instanceof Brand){
            MyObj br = (MyObj) object;
            Logger.info("waaaazaa update" + br.toString());
        }
    }
我能够调试代码,我可以看到这是可行的。然而,我应该开发一些审计机制,稍后会知道某个对象发生了什么变化

例:

这将触发预印本,在这种情况下没有任何变化,我可以简单地写入我的审计表,创建新对象。但是,如果发生更新:

Obj a = getItFromMyDB;
a.name "My name has changed";
a.update();
预更新被触发。在更新之前,我如何知道此对象的值

在这个preupdate方法中,我只得到新的更新对象。如果我知道如何获取“旧”对象,那么我可以比较它们并将更改保存在我的审计数据库中。

您看过吗?您可以使用@Audited注释您的持久性类或其某些要审核的属性。对于每个被审计实体,将创建一个表,该表将保存对该实体所做更改的历史记录。然后可以检索和查询历史数据

PhilWilson写了一篇关于使用游戏中的Envers的好文章

Obj a = getItFromMyDB;
a.name "My name has changed";
a.update();