2011-01-28 12 views
6

Zastanawiam się, czy istnieje łatwy sposób wdrożenia śledzenia zmian w jednostkach? Istnieje Envers od Hibernate, aby przeprowadzić audyt, ale z tego co rozumiem, jest on zorientowany na hibernację. Zastanawiam się, czy jest coś w JPA, czy rozwiązanie, które nie wychodzi poza specyfikację. Jeśli nie ma żadnych, czy ktoś może rzuci mi pomysł, jak zacząć z tego rodzaju rzeczy. Jednym z pomysłów, który przychodzi do mnie, aby utworzyć podmiot, na przykład:JPA: Pomysły do ​​śledzenia ewolucji/zmian podmiotów

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

która zawierałaby zmienionych właściwości. Rozwiązanie to wydaje się być dość wydajne pod względem miejsca przechowywania, ale może być trudniejsze w radzeniu sobie z relacjami między podmiotami, które są śledzone (jeszcze się nie domyśliły).

Doceniam żadnych danych w tym temacie,

pozdrowienia rodzaju, P.

+0

Nie sądzę, aby w JPA 1.0. Może w JPA 2.0? – Kartoch

+0

JPA2 nie dotyka takich rzeczy. Jest on wymieniony na możliwych pozycjach JPA2.1 (wróć w 2 lata). – DataNucleus

Odpowiedz

4

Można użyć @PrePersist adnotacji Aby utworzyć pozycję i przechowywać go do bazy danych.

class Entity{ 

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

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

} 
+0

To jest podejście, które rozważam, nawet jeśli nie podoba mi się menedżer podmiotu wewnątrz jednostki. Minusem tego rozwiązania jest to, że odzyskanie stanu z określonej daty może być dość skomplikowane. – redbull

+0

Myślę, że pójdę tą drogą, więc dziękuję za poświęcony czas i radę, pozdrawiam! – redbull

Powiązane problemy