2013-11-26 4 views
5

Ich möchte die Protokollierung/Überwachung der Historie für eine meiner Modelleinheiten implementieren, indem ich eine neue Tabelle zum Speichern eines Protokolls mit dem Benutzer, der die Änderung vorgenommen hat, dem Datum und den bei jeder Aktualisierung/Einfügung geänderten Daten verwendet habe .Verlaufsverfolgung mit JPA

Ich benutze EclipseLink als mein JPA-Provider, aber ich möchte nicht History Policy verwenden, weil der Anbieter in der Zukunft ändern kann. Ich kann Hibernate Envers aus dem gleichen Grund nicht verwenden.

Ich schaute in die auditing support which Spring Data provides, aber es scheint sehr einfach und es erlaubt Ihnen nur, den Benutzer zu speichern, der die Entität und die Daten, nicht die Änderungen erstellt oder geändert hat.

ich auch über PPV-weiß prePersist und preUpdate, aber die specificacion sagt, dass:

Im Allgemeinen ist die Lebensdauer Verfahren einer tragbaren Anwendung sollte EntityManager oder Abfrageoperationen nicht aufrufen, Zugriff auf andere Entitätsinstanzen, oder ändern Sie Beziehungen innerhalb der gleichen Persistenz Kontext.

Gibt es eine saubere, einfache und portable Möglichkeit, dies zu implementieren?

Antwort

1

Ich habe das manuell gemacht, mit einem separaten EJB-Dienst, dessen Aufgabe es war, historische Daten zu extrahieren und als MAP zu speichern. Es ist sehr rudimentär, in dem nur grundlegende Daten und die IDs von Beziehungen gespeichert werden, aber das war genug für meinen Fall.

Im Grunde betrachtete ich die hartnäckigen Eigenschaften mit ein wenig Nachdenken.

+0

Danke Andrei, ich so etwas würde versuchen, – zootropo