2012-03-14 16 views
1

Javaプロジェクト(JSF/EJB/JSF)に「バージョン管理」機能を実装したいと考えています。 A上の任意の変更、上の図は、3つのオブジェクト、すなわち、A、B及びC BとCとの単純なオブジェクトグラフは、Aの「一部である」と表示エンティティ変更のバージョンを追跡/記録する方法

 
     ----- 
     | A | 
     ----- 
     1/\1 
     /\ 
     */ \* 
    ----- ----- 
    | B | | C | 
    ----- -----  

および/または:私は例をあげてみようBおよび/またはCは新しいバージョンのAを作成する必要があります。

質問はJava側とデータベース側の両方で実装する方法ですか?

SolutionA::私たちは、これまでとまだ和解2溶液を得た

非常にAの新しい深いクローンの原因となりますAの部分に変化し、このクローンは、データベースへのJPA経由で執拗されます新しいバージョン。長所:実装は簡単です。短所:Java側とデータベースの両方で多くの冗長性(オブジェクトグラフが非常に大きい場合を考慮)があります。

SolutionB:データベースのAの変更部分のみを作成します。 長所:冗長性がなく、DBのパフォーマンスが向上する場合があります。短所:これはオブジェクトグラフを破壊し、オブジェクト間の関係/参照を手動で維持する必要があります。開発を悪夢に駆り立てるかもしれない。

+0

バージョン管理システムの場合、モデルを変更、バージョンなどで表現しないでください。 –

+0

まず、オブジェクトを作成するときにリレーションシップを解決する必要がないため、ソリューションAは適切なインデックスでDBパフォーマンスが向上します。次に、バージョン管理の目的は何ですか?違いを比較するには?または単に録音を保つために? – Chao

答えて

0

これはJAVAの優れたフレームワークです。見てください:Envers

パフォーマンスの問題については、フレームワークの仕組み(データベースの冗長性または無し)がわかりませんが、オブジェクトの複製は避けてください。

関連する問題