BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JPAエンティティのバージョニング

JPAエンティティのバージョニング

先ごろバージョン1.0.0 GAをリリースしたEnvers(リンク)は、JBoss(リンク)によるオープンソースプロジェクトだ。プロジェクトのWebサイトに記載された(リンク)、プロジェクトの主要な目的は、以下のとおり。
...永続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は、とても新しいプロジェクトで、まだそれほど牽引力(リンク)は無いが、間違いなく注目し続ける価値がある。さらなる情報は、以下のリソースを参照してみてほしい。

原文はこちらです:http://www.infoq.com/news/2008/07/envers_1_0_0_ga

この記事に星をつける

おすすめ度
スタイル

BT