And*_*rei 43

[存储库]是映射层的另一层抽象,其中查询构造代码集中.

DataMapper确保栅栏的DB方并不需要了解你的业务逻辑的细节和数据是如何通过你的业务对象保存在内存中,并在围栏的业务方并不需要知道数据是如何存储.

为了说明,请考虑您的数据作为一组行保存在数据库中,例如每行代表商店中的项目.在内存方面,您可能希望将该信息保留为列表而StoreItem不是两个列表,一个用于库存商品,另一个用于缺货商品.这将是DataMapper"工作是为了处理一个列表,两个列表之间的过渡.

您可以通过在fence的业务端添加其他对象和继承的列表来使事情复杂化.'DataMapper'必须从该表示转换为关系数据库.

'Repository'为业务方提供了"SELECT*FROM table WHERE condition"功能.您提供了一个过滤器,它将返回与该过滤器匹配的对象集合.

简而言之:'DataMapper'处理单个对象,'Repository'处理对象集合并扩展'DataMapper'提供的功能.

  • 我没有得到的是*谁负责解决关系.假设我想获取`List <Subscription>`并且每个'Subscription`都有一个`List <AddOn>`.我可以获取存储库层中的所有数据并返回它但是存储库然后执行的工作实际上是映射层的工作吗? (2认同)