业务层,数据层,放置查询的位置?

时间:2009-11-07 00:02:32

标签: php 3-tier data-layers

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

2 个答案:

答案 0 :(得分:7)

将SQL查询放入数据层。

对于像SELECT * FROM table这样的查询,无论你是模型本身的类方法,还是模型管理器对象的方法,都是风格问题。

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

答案 1 :(得分:1)

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

但是,请注意,数据访问层(DAL)不应与您的域层或业务逻辑层混淆,具体取决于您的架构方法。如果你想深入研究这个主题,我认为每个开发人员都应该寻求Martin Fowler's articles,你也可以阅读我之前做过的this博客文章,不像M那么重要福勒,但我对此事做了一些反思。

祝你好运, 大卫