【发布时间】:2012-02-23 14:49:52
【问题描述】:
我正在尝试以 MVC 模式编写一个 Web 应用程序,我想知道在一个类中创建一个包含所有数据库调用的类是否是一种好习惯,这些数据库调用将由该类中的应用程序使用。
然后在需要的时候创建这个类的实例?
或者将数据库调用混合到需要访问数据库的任何特定类(模型或控制器)中更好?
【问题讨论】:
我正在尝试以 MVC 模式编写一个 Web 应用程序,我想知道在一个类中创建一个包含所有数据库调用的类是否是一种好习惯,这些数据库调用将由该类中的应用程序使用。
然后在需要的时候创建这个类的实例?
或者将数据库调用混合到需要访问数据库的任何特定类(模型或控制器)中更好?
【问题讨论】:
在我的实践中,数据访问对象,简称DAO,只是在SQL中有所不同。所以,使用一个DB对象来封装查询,包括选择和修改(更新,插入和删除),然后不同的表或模块有不同的DAO来构建其特定的SQL并使用DB对象进行查询。
【讨论】:
嗯,这是个好问题。这更像是个人意见,但我通常做的是创建一个数据库对象来处理所有数据库调用,然后我根据需要创建不同的数据库对象。例如,我将创建一个 UserDB 对象并将数据库调用放置在其中对用户来说是唯一的。如果您有用户组,您还可以创建一个 UserGroupDB 对象并使用它来调用您需要的所有数据库查询。这使您的代码易于阅读并且可以在系统的多个部分中使用,同时仅将数据库逻辑保留在一个位置。您不想为所有数据库查询创建单个数据库对象,因为这将是明显的开销,因为系统中的所有页面都不需要大多数查询。
我希望这会有所帮助。
【讨论】:
通常,数据访问由模型处理,但在某些情况下模型与数据访问层不同。
对于更简洁的代码,创建一个抽象类来处理您的数据访问层和您拥有的每个模型的具体类可能更明智。
【讨论】: