1

次の構造を持つHibernateエンティティが1つあります。

@Entity
public class A
{
  private Integer id;
  private String name;
  @OneToMany
  private List<B> bList;
}

@Entity
public class B
{
  private Integer id;
  @OneToMany
  private List<C> cList;
}

次に、エンティティ「A」の履歴を次のような情報で維持したいと思います。

historyDate | fieldsChanged | updatedBy | createdBy

列にはfieldsChanged、エンティティAの列の名前と、エンティティBまたはCに変更が適用されているかどうかが必要です。

今、私はグーグルで検索し、これらを達成するための次の方法のいくつかを見つけました:

  1. DBでのライタートリガー
  2. 履歴テーブルを維持するための独自のJavaロジック
  3. HibernateEnversの使用

今、私は上から、または他の何かからのより良いアプローチが何であるかわかりません。

任意の提案をいただければ幸いです...

4

1 に答える 1

1

Enversは、異なる監査スキームを使用します。つまり、変更ごとにエンティティのコンテンツ全体を保存します。答えは本当にあなたが必要とするものに依存します。

  1. さまざまな言語で記述されたさまざまなシステムからDBに直接アクセスする場合は、これが正しい選択です。
  2. あなたが書いた構造を持つ必要がある場合に最適です
  3. 監査を提供しますが、形式は異なります。
于 2012-10-26T07:13:31.217 に答える