2

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

4

2 回答 2

7

将 SQL 查询放在数据层中。

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

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

于 2009-11-07T00:13:40.993 回答
1

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

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

最好的问候,大卫

于 2011-01-03T07:17:12.900 回答