【问题标题】:Business layer, data layer, where to put queries?业务层,数据层,查询放在哪里?
【发布时间】:2010-12-14 01:30:37
【问题描述】:

我有一个数据访问层,它对数据库中的每个表都有单独的类。每个类都创建引用表中行的对象,它们具有创建、更新、删除和获取功能。它们都扩展了一个 DBObj 类。我的问题是,假设我想向SELECT * FROM table 写一个查询,并将其包含在一个函数中。把这个放在哪里最好?在业务层还是在各自的数据层类中分组所有相关功能?如果重要的话,它在 PHP 中,使用 MySQL。

【问题讨论】:

  • 你在考虑什么 ORM?

标签: php 3-tier data-layers


【解决方案1】:

我刚刚发现了你的问题,我想提出另一种观点。您应该在大多数应用程序(不会说所有,但它接近它)上构建一个数据抽象层,大多数时候定义为 ORM 框架。

但请注意,数据访问层 (DAL) 不应与您的领域层或业务逻辑层混淆,具体取决于您的架构方法。如果您想更深入地研究这个主题,我认为每个开发人员都应该,您可以寻求Martin Fowler's articles,也可以阅读我前段时间写的this 博客文章,虽然不如 M. Fowler 重要,但是我对这件事做了一些思考。

最好的问候, 大卫

【讨论】:

    【解决方案2】:

    将 SQL 查询放入数据层。

    对于像SELECT * FROM table 这样的查询,是否将其设为模型本身的类方法或模型管理器对象的方法,都是风格问题。

    但是业务逻辑应该从数据库模式的任意细节中抽象出来。业务层应该能够只向数据层询问模型的所有实例,而无需关心将用于获取该数据的特定查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-29
      • 2013-03-04
      • 2014-04-23
      • 2013-02-27
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多