2011-01-28 4 views
6

엔티티에서 변경 사항 추적을 구현하는 쉬운 방법이 있습니까? 최대 절전 모드에서 감사 기능을 가진 Envers가 있지만, 최대 절전 모드를 이해했다면 이해할 수 있습니다. JPA 내부에 뭔가가 있거나 사양을 벗어나지 않는 해결책이 있다면 생각하고 있습니다. 아무 것도 만들지 않았다면, 누군가 이런 식으로 시작하는 방법을 나에게 던질 수 있겠습니까? 나에게 오는 하나 개의 아이디어는 예를 들어 엔티티를 생성하는 것입니다 :JPA : 엔티티의 진화/변화를 추적하는 아이디어

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

변경된 속성을 포함 할 것이다. 이 솔루션은 저장 장소 측면에서 상당히 효율적으로 보이지만 추적되는 엔티티 간의 관계를 처리하는 것이 더 어려울 수 있습니다 (아직 파악하지 못함).

나는 매우 당신이 항목을 만들 수 @PrePersist 주석을 사용하여 데이터베이스에 저장할 수 있습니다,이 항목의

종류의 안부 P.

+0

JPA 1.0에서는 그렇게 생각하지 않습니다. 아마 JPA 2.0에서? – Kartoch

+0

JPA2는 그런 일에 손대지 않습니다. JPA2.1 가능한 항목에 나열되어 있습니다 (2 년 후에 돌아옵니다) – DataNucleus

답변

4

을 모든 입력을 주셔서 감사합니다.

class Entity{ 

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

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

} 
+0

엔티티 내부의 엔티티 관리자를 싫어하는 경우에도 이것이 고려중인 접근 방법입니다. 이 솔루션의 단점은 특정 날짜에서 상태를 검색하는 것이 매우 복잡 할 수 있다는 것입니다. – redbull

+0

나는이 길로 갈 것이므로 시간과 조언을 해주셔서 감사 드리며 인사드립니다! – redbull

관련 문제