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のパフォーマンスが向上する場合があります。短所:これはオブジェクトグラフを破壊し、オブジェクト間の関係/参照を手動で維持する必要があります。開発を悪夢に駆り立てるかもしれない。
バージョン管理システムの場合、モデルを変更、バージョンなどで表現しないでください。 –
まず、オブジェクトを作成するときにリレーションシップを解決する必要がないため、ソリューションAは適切なインデックスでDBパフォーマンスが向上します。次に、バージョン管理の目的は何ですか?違いを比較するには?または単に録音を保つために? – Chao