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