6.4. Configuration (設定)
6.4.1. Envers パラメーターの設定
JBoss EAP は About Hibernate Envers を介してエンティティー監査を使用して、永続クラスのこれまでの変更を追跡します。
利用可能な Envers パラメーターの設定
-
アプリケーションの
persistence.xml
ファイルを開きます。 必要に応じて Envers プロパティーを追加、削除、または設定します。利用可能なプロパティーの一覧は、Envers Configuration Properties を参照してください。
例: Envers パラメーター
<persistence-unit name="mypc"> <description>Persistence Unit.</description> <jta-data-source>java:jboss/datasources/ExampleDS</jta-data-source> <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> <properties> <property name="hibernate.hbm2ddl.auto" value="create-drop" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.cache.use_second_level_cache" value="true" /> <property name="hibernate.cache.use_query_cache" value="true" /> <property name="hibernate.generate_statistics" value="true" /> <property name="org.hibernate.envers.versionsTableSuffix" value="_V" /> <property name="org.hibernate.envers.revisionFieldName" value="ver_rev" /> </properties> </persistence-unit>
6.4.2. ランタイム時の監査の有効化または無効化
ランタイム時のエンティティーバージョンの監査の有効化または無効化
-
AuditEventListener
クラスをサブクラス化します。 Hibernate イベントで呼び出される以下のメソッドを上書きします。
-
onPostInsert
-
onPostUpdate
-
onPostDelete
-
onPreUpdateCollection
-
onPreRemoveCollection
-
onPostRecreateCollection
-
- イベントのリスナーとしてサブクラスを指定します。
- 変更を監査する必要があるかどうかを判断します。
- 変更を監査する必要がある場合には、スーパークラスに呼び出しを渡します。
6.4.3. 条件監査の設定
Hibernate Envers は、一連のイベントリスナーを使用して、さまざまな Hibernate イベントに対する応答で監査データを永続化します。Envers JAR がクラスパスにある場合、これらのリスナーは自動的に登録されます。
条件監査の実装
-
persistence.xml
ファイルでhibernate.listeners.envers.autoRegister
を false に設定します。 - 上書きされる各イベントリスナーをサブクラス化します。条件付き監査ロジックをサブクラスに配置し、監査を実行する必要がある場合は super メソッドを呼び出します。
-
org.hibernate.envers.event.EnversIntegrator
に類似した、org.hibernate.integrator.spi.Integrator
のカスタム実装を作成します。デフォルトのクラスではなく、ステップ 2 で作成したイベントリスナーサブクラスを使用します。 -
META-INF/services/org.hibernate.integrator.spi.Integrator
ファイルを JAR に追加します。このファイルには、インターフェイスを実装するクラスの完全修飾名が含まれている必要があります。
6.4.4. Envers 設定プロパティー
表6.1 エンティティーデータのバージョン管理設定パラメーター
プロパティー名 | デフォルト値 | 説明 |
---|---|---|
| 監査されたエンティティーの名前の前に付加される文字列。監査情報を保持するエンティティーの名前を作成します。 | |
| _AUD |
監査されたエンティティーの名前に付加される文字列。監査情報を保持するエンティティーの名前を作成します。たとえば、テーブル名が |
| REV | 改訂番号を保持する監査エンティティーのフィールド名。 |
| REVTYPE |
改訂の種類を保持する監査エンティティーのフィールド名。現在の改訂の種類には、挿入を行う |
| true |
このプロパティーは、所有の変更のない関係フィールドがある場合にリビジョンを生成するかどうかを決定します。これは、一対多数の関係のコレクションであるか、一対一の関係で |
| true |
true の場合、( |
| false | このプロパティーは、ID のみではなく、エンティティーデータを削除するときに、エンティティーデータをリビジョンに保存するかどうかを定義します。その他のすべてのプロパティーは null とマークされます。通常、データは最後から 2 番目のバージョンにあるため、これは必須ではありません。ただし時折、最後のリビジョンでアクセスすることが簡単で、より効率的になる場合があります。ただし、これは、削除前に含まれるエンティティーのデータが 2 回保存されることを意味します。 |
| null (通常のテーブルと同じ) |
監査テーブルに使用されるデフォルトのスキーマ名。 |
| null (通常のテーブルと同じ) |
監査テーブルに使用するデフォルトのカタログ名。 |
|
|
このプロパティーは、監査データの永続化時に使用する必要のある監査ストラテジーを定義します。デフォルトでは、エンティティーが変更されたリビジョンのみが保存されます。または、 |
| REVEND | 監査エンティティーで終了リビジョン番号を保持するコラムの名前。このプロパティーは、妥当な監査ストラテジーが使用される場合にのみ有効です。 |
| false |
このプロパティーは、終了リビジョン自体に加えて、データが最後に有効であった終了リビジョンのタイムスタンプも保存すべきかどうかを定義します。これは、テーブルパーティションを使用して、リレーショナルデータベースから古い監査レコードをパージする場合に便利です。パーティショニングには、テーブルに存在するコラムが必要です。このプロパティーは |
| REVEND_TSTMP |
データがまだ有効であった時点での終了リビジョンのタイムスタンプのコラム名。 |