2

私はすでに Hibernate Envers を使用して、ユーザーが UI を介して更新したエンティティを監査しています。ただし、バックグラウンドで実行されている非同期ジョブもあり、Envers を使用してそれらも監査したいと考えています。ここで、UI について、どの HttpRequest が変更を加えたかを追跡して、日付、ユーザー、セッションなどを取得します。バックグラウンド ジョブについては、ジョブが実行された日付と、それを変更した正確なジョブを追跡したいと思います。 (ジョブクラス)。

2 つの監査エンティティ (UI 用に 1 つ、システム変更用に 1 つ) をセットアップすることは可能ですか?

ウォルター

4

1 に答える 1

1

私はまだこれをテストしていませんが、私は単に次のことを行っています:

@RevisionListener(SystemRevisionListener.class)
@Entity
public class SystemRevision extends AbstractRevision
{
   @Column(nullable = false, updatable = false)
   protected QuartzTriggerHandle job;

   @Column(nullable = false, updatable = false)
   protected Class jobClass;

   ...
}



@RevisionListener(WebRevisionListener.class)
@Entity
public class WebRevision extends AbstractRevision
{
   @ManyToOne(optional = false)
   @JoinColumn(nullable = false, updatable = false)
   protected HttpRequest httpRequest;

   ...
}

次に、各リスナーで、これらのプロパティを設定するために必要なことは何でもします。これで、エンティティがどのように変更されたか、ユーザーが変更を行ったかどうか(および、どのリクエストに関連付けられているか)、またはシステムがエンティティを変更した場合、どのジョブが変更の原因であるかを追跡できるようになります。SystemRevisionには、これよりも多くのプロパティ、おそらく引数とメソッド名を格納します。

于 2010-05-24T18:22:46.267 に答える