2011-01-28 11 views
6

Me preguntaba ¿hay alguna manera fácil de implementar el seguimiento de los cambios en las entidades? Hay Envers de Hibernate para realizar una auditoría, pero por lo que entiendo está orientado a Hibernate. Estoy pensando si hay algo dentro de JPA, o una solución que no se sale de la especificación. Si no hay ninguno, ¿alguien podría darme una idea de cómo comenzar con este tipo de cosas? Una idea que me viene a la mente es crear una entidad, por ejemplo:JPA: Ideas para rastrear la evolución/cambios de las entidades

class Change { 
    String className; 
    long id; 
    String fieldName; 
    String fieldValue; 
    Date dateOfChange; 
} 

Que contendría las propiedades modificadas. Esta solución parece ser bastante eficiente en términos de espacio de almacenamiento, pero podría ser más difícil manejar las relaciones entre las entidades que se rastrean (aún no se resolvió).

Estoy muy agradecido por cualquier entrada en este tema,

Saludos cordiales, P.

+0

No lo creo en JPA 1.0. Tal vez en JPA 2.0? – Kartoch

+0

JPA2 no toca tales cosas. Está en la lista de elementos posibles de JPA2.1 (vuelve en 2 años) – DataNucleus

Respuesta

4

Puede utilizar la anotación @PrePersist para crear una entrada y almacenarlo en la base de datos.

class Entity{ 

    @PrePersist 
    public void logChanges(){ 
     Change c = new Change() 
     c.setEverythingXouLikeToLog(); 

     entityManager.persist(c); 
     // don't forget ExceptionHandling 
    } 

} 
+0

Este es el enfoque que estoy considerando, incluso si no me gusta el administrador de la entidad dentro de la entidad. La desventaja de esta solución es que podría ser bastante complicado recuperar el estado de una fecha determinada. – redbull

+0

Creo que iré de esta manera, así que gracias por su tiempo y consejos, ¡saludos! – redbull

Cuestiones relacionadas