11.7.3. 監査ストラテジー

11.7.3.1. 監査ストラテジーについて

監査ストラテジーは、監査情報の永続化、クエリ、格納の方法を定義します。Hibernate Envers には現在 2 つの監査ストラテジが存在します。
デフォルトの監査ストラテジー
このストラテジーは監査データと開始リビジョンを共に永続化します。監査テーブルで挿入、更新、削除された各行については、開始リビジョンの有効性と合わせて、1 つ以上の行が監査テーブルに挿入されます。
監査テーブルの行は挿入後には更新されません。監査情報のクエリはサブクエリを使い監査テーブルの該当行を選択します (これは時間がかかり、インデックス化が困難です)。
妥当性監査ストラテジー
このストラテジーは監査情報の開始リビジョンと最終リビジョンの両方を格納します。監査テーブルで挿入、更新、削除された各行については、開始リビジョンの有効性とあわせて、1 つ以上の行が監査テーブルに挿入されます。
同時に、以前の監査行 (利用可能な場合) の最終リビジョンフィールドがこのリビジョンに設定されます。監査情報に対するクエリーは、サブクエリーの代わりに開始最終リビジョンのいずれかを使用します。つまり、更新の数が増えるため監査情報の永続化には今までより少し時間がかかりますが、監査情報の取得は非常に早くなります。
インデックスを増やすことで改善することも可能です。
監査の詳細については、「永続クラスの監査について」を参照してください。アプリケーションの監査ストラテジーを設定するには、「監査ストラテジーの設定」を参照してください。