Auditing mit Hibernate Envers

07.11.2012

Mit Hibernate kann man Änderungen im Datenbestand einer Datenbank speichern und abfragen. Die Dokumentation findet man hier.

Eine kurze Beschreibung an einem Beispiel erläutert das Feature. Zunächst erstellt man wie gewohnt seine Datenbank Tabelle und das zugehörige Domain-Objekt in Java mit den JPA Annotationen. Das Auditing Feature aktiviert man durch die @Audited Annotation.

import org.hibernate.envers.Audited;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;

@Entity
@Audited
@Table(name = "duck")
public class Duck {
    @Id @GeneratedValue(strategy = GenerationType.TABLE)
    private long id;
    private long size;
    private String colour;
    private String style;
    // getters and setters
}

Jetzt muß man die persistence.xml anpassen damit Änderungen am Datenbestand einen Eintrag in der Auditing Tabelle erzeugen (siehe dazu die Hibernate Dokumentation). Hibernate erzeugt zusätzlich zur bestehenden Tabelle (im Beispiel „duck“) eine Auditing Tabelle („duck_AUD“) und die Tabelle „REVINFO“.

Nun kann man alte Datenzustände mit folgendem Code abfragen

AuditReader auditReader = AuditReaderFactory.get(em);
Number revision = auditReader.getRevisionNumberForDate(myDate);
AuditQuery auditQuery = auditReader.createQuery().forEntitiesAtRevision(Duck.class, revision);
Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*