2011-01-28 7 views
6

エンティティの変更の追跡を実装する簡単な方法はありますか? Hibernateから監査を受けるEnversがありますが、私が理解する限りHibernate指向です。私は、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

関連する問題