0

いくつかのベストプラクティスのアドバイスを求めています。基本的に、私はさまざまなプロパティで構成される大きなエンティティを持っていますが、一部のプロパティは他のエンティティです。

データマッパーで大きなエンティティを「インスタンス化」するためのベストプラクティスは何ですか?「メイン」マッパー内の他のエンティティに対して他のマッパーを呼び出しますか?たとえば、「customer」プロパティがcustomerエンティティであるさまざまなプロパティで構成されるエンティティ「Big」がありますが、これが最善の方法ですか?

class BigMapper{

  //Find and return a BigEntity
  function find($id){
    $customerMapper = new CustomerMapper($this->db);
    $customer = $customerMapper->findByBigEntityId($id);
    $bigRow = $this->db->fetchRow('SELECT * FROM big WHERE id = ?', $id);
    $bigRow['customer'] = $customer; //This line feels sort of ugly.... and then:
    return( new EntityBig($bigRow) );
  }

}

人々がサービスレイヤーで他のマッパーをインスタンス化し、次に各エンティティをそれ自体で検証し、最終的にそれらすべてを組み合わせるなどのソリューションを見てきましたが、大きなエンティティを「構築」する最良の方法は本当にわかりません他のいくつかのエンティティに基づいています。

コメントや助けていただければ幸いです。ありがとうございます。

4

1 に答える 1

1

一度にデータ レイヤーにすべてのプロパティがある場合は、それらすべてをマッピングすることをお勧めします。それは大きな実体をそれ自体で完成させるでしょう。

ただし、遅延読み込みを行う必要がある場合。一度にすべてのデータ (つまり、顧客エンティティ) は必要ありません。最初に顧客エンティティの ID をマップするだけでかまいません。後で必要になった場合は、データベースを呼び出して ID に基づいて顧客エンティティをフェッチし、顧客エンティティを Big Entity にマップすることができます。

于 2012-08-19T13:48:30.740 に答える