...永続JPAクラスのバージョニングを簡単にします。あなたが行うべきことは、バージョニングしたい永続クラスと、そのいくつかのプロパティに対して、@Versionedアノテーションを付加することだけです。バージョニングされる各エンティティに対して、変更の履歴を保持するためのテーブルが作成されます。その結果あなたは、ほとんど苦労することなく、履歴データの検索と取得を行うことができます。
Enversは、HibernateおよびHibernateのエンティティマネージャと一緒に実行できるところなら、どこでも動作する。たとえばEnversは、スタンドアローン環境やアプリケーションサーバの内部で、JBoss Seam(リンク)やSpring(リンク)と一緒に実行することができる。Enversの最新リリースは、多くの機能を提供する。
- 基本的なプロパティ(String、Integer、Long等)のバージョニング
- 基本的なプロパティから構成される、埋め込みコンポーネントのバージョニング
- 単純主キー、複合主キー、および埋め込み主キーによる、クラスのバージョニング
- 1対1の単方向(所有する側のみ)および双方向関連のバージョニング
- recal relations1対多の単方向(所有する側のみ)および双方向関連のバージョニング
- セカンダリテーブルのサポート
- 「リビジョンエンティティ」を利用する、各リビジョンのためのロギングデータ
- 履歴データの検索
さらに1.0.0 GAリリースは、プレビューバージョンやベータバージョンで利用できなかった、コレクションの変更に対するリビジョニングを提供する。たとえば(リンク)、
双方向の多対1関連で、PersonとAddressのエンティティがあるとします(各個人は、住所を1つだけ持ち、同じ住所には、複数人が住むことができます)。そして、個人の住所を変更します。つまり、個人の新しい住所と古い住所のコレクションの内容を変更します。Enversのプレビューバージョンやベータバージョンでは、(Javaビーン内のデータが変更されても)データベーステーブル内のデータが変更されないので、Addressに対するリビジョンは生成されません(Personに対してのみ生成されます)。しかし、最新バージョンでは、3つのエンティティすべてに対して、リビジョンが生成されます。
もし、いくつかの理由で、この機能を利用したくないなら、わずかな設定の変更(リンク)、
Enversの将来のバージョンには、任意の関連をバージョニングする機能や、(保存スペースを節約するために)リビジョン間の差分だけを保存する機能、などが含まれる予定だ(リンク)。Enversは、とても新しいプロジェクトで、まだそれほど牽引力(リンク)は無いが、間違いなく注目し続ける価値がある。さらなる情報は、以下のリソースを参照してみてほしい。