存储库或DAO:从多个表中读取数据

时间:2018-03-29 09:54:43

标签: repository repository-pattern dao

我们有一个课程,我们有方法:

  • 查找:选择+多个联接以过滤数据
  • add:insert in multiple table
  • 更新:在多个表中更新
  • 删除:在多个表中删除
  • 检查:多个选择+多个联接以检查某些内容

是存储库还是DAO?

1 个答案:

答案 0 :(得分:2)

<强> TL; DR;
这看起来更像是我的存储库;亲自。

在纯粹主义者中,存储库和DAO之间存在很大争议。许多开发人员可以互换使用术语DAO和Repository。我个人并不认真对待这场辩论。我宁愿专注于我的应用程序需求。

以下是DAL中使用的某些模式的非常粗略描述:

工作单位:

  • 处理数据库连接和事务。
  • 另外处理缓存,批量查询,跟踪等。
  • 请参阅this answer。

<强>存储库:

  • 主要使用UnitOfWork;并非总是如此。
  • 不是每个表,它是每个聚合根。
  • 返回域对象; NOT Object State(Entity / POCO)。
  • 请参阅this回答。此外,this还有其他几个条款的答案。

DAO(数据访问对象):

  • 紧密绑定到数据库而不是业务逻辑。
  • 1:1与表格的映射。
  • 每个操作都是交易。
  • 返回对象状态(Entity / POCO)。

CQRS(命令查询责任隔离):

  • 使用不同的模型编写(INSERT,UPDATE,DELETE)信息,而不是用于读取(SELECT)信息的模型。
  • 编写操作包含在Command。
  • 查询操作包含在查询中。
  • 每个层都可以根据特定需求进行独立优化。

查询对象:

  • 接受查询作为方法参数中的对象。

数据映射器:

  • 使用表格映射POCO,反之亦然。

<强> ActiveRecord的:

  • Poco和Methods属于同一类。
  • 映射发生在同一个类中。
  • 使用单一记录行事。