2013-11-26 30 views
5

Vorrei implementare il tracciamento/auditing della cronologia per una delle entità del modello utilizzando una nuova tabella per memorizzare un registro con l'utente che ha apportato la modifica, la data e qualsiasi modifica apportata a ciascun aggiornamento/inserto .Monitoraggio cronologia con JPA

Utilizzo EclipseLink come provider JPA, ma non desidero utilizzare il suo History Policy perché il provider può cambiare in futuro. Non posso né usare Hibernate Envers per lo stesso motivo.

Ho esaminato il auditing support which Spring Data provides, ma sembra molto semplice e consente solo di memorizzare l'utente che ha creato o modificato l'entità e le date, non le modifiche.

so anche su JPA di prePersist e preUpdate, ma lo specificacion dice che:

In generale, il metodo del ciclo di vita di un'applicazione portatile non dovrebbe invocare operazioni EntityManager o query, accedere ad altre entità casi, o modificare le relazioni all'interno dello stesso contesto di persistenza .

Esiste un modo pulito, facile e portatile per implementare questo?

risposta

1

L'ho effettuato manualmente, con un servizio EJB separato, la cui responsabilità era estrarre i dati della cronologia e salvarli come MAP. È molto rudimentale in cui vengono salvati solo i dati di base e gli ID delle relazioni, ma questo è stato sufficiente per il mio caso.

Fondamentalmente stavo ispezionando le proprietà persistenti con un po 'di riflessione.

+0

Grazie Andrei, proverò qualcosa del genere – zootropo