0

寻求一些最佳实践建议。基本上我有一个由各种属性组成的大型实体,其中一些属性是其他实体。

在我的数据映射器中“实例化”大实体的最佳实践是什么?我是否为“主”映射器中的其他实体调用其他映射器?例如,我有一个实体“大”,它由各种属性组成,其中“客户”属性是客户实体,这是最好的方法吗?

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 获取客户实体,然后将客户实体映射到大实体中。

于 2012-08-19T13:48:30.740 回答