0

私が取り組んでいるプロジェクトに問題があります。エンティティ オブジェクトを VO (値オブジェクト) 形式に変換するマッパーを作成する必要があります。永続化レイヤーとビジネス レイヤーの間の依存関係を制限するためにそれを行う必要がありますが、解決できない循環依存関係がいくつかあります。この例を見てください:

ビジネスレイヤーでコンピテンスオブジェクトを使用したいので、マッパーを使用してエンティティをレイヤーで使用できるVOに変換します。

class Competence {
    private Domain dom;
}

class Domain {
    private List<Competence> lComp;
}

しかし、コンピテンス オブジェクトを変換するときは、ドメインも変換する必要があり、ドメインを変換するときは、コンピテンス リストなどを変換する必要があります。データベースの半分を変換したくありません :/

オブジェクトの半分を変換するか、一部のオブジェクトを回避してサイクルを停止することを考えていますが、危険であり、これは実際には私の問題の解決策ではありません:/

これを解決する解決策はありますか?

前もって感謝します !:)

4

2 に答える 2

2

この種の問題に対処する標準的なメカニズムの 1 つは、次のように再コーディングすることです。

class Competence {
}

class Domain {
}

class CompetenceDomain {
  Competence competence;
  Domain domain;
}

Map<Domain,List<Competence>> domainsWithCompetence = ...;
Map<Competence,Domain> competencesInDomain = ...;

これにより、オブジェクトの関係がオブジェクト自体から分離され、別のメカニズムになります。

于 2013-02-22T12:45:24.853 に答える
0

これにはいくつかの方法があります。まず、変換する側を決定する必要があります。Competences を変換したいが、 sを変換したくないと仮定しましょうDomain

  1. ID を使用してDomain内のを参照しCompetenceます。
  2. Domain必要なID と最小限のフィールド セット ( を除く) のみを含むスタブ オブジェクトを使用Competenceします。

うまくいけば、私はあなたの質問を正しく理解しました。

于 2013-02-22T12:44:29.333 に答える