2016-06-07 16 views
1

Es folgt Tabellenstruktur:Wie man Audit Log Trail in Hibernate erstellt?

id | createdby | createddate | tablename | columnname | primaryid | oldavalue | newvalue | remarks 

wir getrennte Datei erhalten, in dem wir einige Werte haben in 4 Tabellen zu aktualisieren. Vier Tabellen haben jeweils 10 Spalten. Wir wissen nicht, was wir aktualisieren sollen. Wir aktualisieren also die ganze Zeile gegen eine Primary ID.

Hier Herausforderungen sind:

  1. Wie Tabellennamen, Spaltennamen in dem Ruhezustand zu bekommen?

  2. Wie man Alten Wert holt; während eines Updates? Wie weiß man, welches Feld wir aktualisieren, hat einen alten Wert und wir fügen jetzt einen neuen Wert ein? (Wir haben die Felder noch nicht verglichen)

+0

wahrscheinlich können Sie eine Protokolltabelle erstellen (Kopie der vorhandenen Tabellen) und alten Datensatz in dieser Tabelle beibehalten und dann die Datensätze mit neu hinzugefügten Daten in Ihren Haupttabellen vergleichen. Sie können Feder AOP verwenden, um den Prozess zu automatisieren. Können Sie klarer sein, wenn Sie die Werte vergleichen müssen? und benötigen Sie SQL-Abfrage zu vergleichen oder Frühjahr Lösung. \ –

+0

Überprüfen Sie [Ruhezustand Envers - Easy Entity Auditing] (http://docs.jboss.org/envers/docs/) –

Antwort

3

Sie können EmptyInterceptor of Hibernate implementieren. In Methoden von EmptyInterceptor können Sie den Feldnamen, den vorherigen Wert und den aktuellen Wert finden.

+0

Könnten Sie bitte auch ein Beispiel für das gleiche? – fatherazrael

+0

Sie können diese http://www.mkyong.com/hibernate/hibernate-interceptor-example-audit-log/ verweisen oder suchen Sie auf Google gibt es viele Beispiele auf EmptyIntercetor – nitika

+0

hi @fatherazrael, ich denke, Winterschlaf Envers ist auch hilfreich für dich. Hier ist ein Beispiel https://newcircle.com/s/post/115/easy_auditing_versioning_for_your_hibernate_entities_with_envers – nitika

0

Sie können auch Frühling AOP verwenden, indem eine Feder Aspekt vor und nach der Ausführung der Operation zu schreiben, die die Daten in Audit-Tabellen

+0

Könnten Sie bitte auch ein Beispiel für dasselbe bereitstellen? – fatherazrael

1

Mein Lieblingswerkzeug für diesen Hibernate Envers ist einfügen werden. Sie kommentieren nur Ihre Entitäten als @Audited und envers kümmert sich um die Interzeptoren.

Verwandte Themen