2016-04-28 2 views
1

J'ai travaillé sur l'audit des applications et j'ai réussi à connecter Hibernate Envers 4.3.11 pour capturer créer, mettre à jour et supprimer, mais je ne trouve aucune documentation sur l'audit des lectures d'entités.Comment vérifier Hibernate lit avec Envers?

Est-ce possible avec Envers ou serait-il préférable de s'appuyer sur log4j ou similaire?

Répondre

0

Je crois que ce n'est pas possible. Nous avons un cas d'utilisation similaire et nous utilisons des intercepters pour générer des enregistrements d'audit sur notre service.

0

Oui, il est possible avec Hibernate Envers d'auditer les lectures d'entités. Voici un exemple pour lire un enregistrement de la table d'audit pour la 1ère révision.

/*Audit Reader*/ 

public AuditReader getAuditReader() { 
     return AuditReaderFactory.get(getCrntSession()); 
    } 

/*The method to read a record from an entity*/ 

Integer revisionNumber = (Integer) getAuditReader().createQuery() 
       .forRevisionsOfEntity(Employee.class, false, true) 
       .addProjection(AuditEntity.revisionNumber().min()) 
       .getSingleResult(); 

     AuditReader reader = getAuditReader(); 
     Employee emp=reader.findRevision(Employee.class, (Number)revisionNumber); 

/* and if Employee has an createdDate record , we can read it using below*/: 
     System.out.println(emp.getCreatedDate()); 
+1

Cela ressemble à la recherche d'un enregistrement précédemment audité. Je veux stocker un enregistrement dans les tables d'audit après chaque lecture d'une entité. J'ai fait des recherches et il ne semble pas que envers soutiendra cette opération. Probablement devoir intercepter des demandes et se connecter directement à un fichier ou à une base de données. – wsams