OO设计决策:类构建本身来自数据库或具有构建器类/工厂

时间:2013-04-05 10:41:50

标签: oop design-patterns database-design object-oriented-analysis

我正在构建一个新的应用程序,无法决定在这个问题上采用哪种方式。

面向数据库数据的类是否应该使用以下方法从数据库构建自己:

class Foo 
{
    public buildYourselfFromDatabaseForID(...)
    //and overloading the constructor etc.
    public commitYourselfToTheDatabase();
}

或者我应该构建一个数据库管理类/工厂来处理所有SQL并为我构建对象,例如:

Foo var = dbManager->createMeAFooFromID(id);
// Make some changes to var

dbManger->commitChangesToFoo(var);

我之前曾在两个方面都做过项目,但是无法真正决定在这个新项目上采用哪种方式,并想知道今天的普遍共识是什么?

我的意思是他们两种方式都有优点和缺点,但对此采用的方法是什么?他们可以指出我们的任何既定模式吗?

1 个答案:

答案 0 :(得分:1)

让实体直接联系数据库违反了separation of concerns - 这意味着除了自己的工作之外,该类正在进行一些数据库工作,这不是它的关注点。

改为拥有工厂/建筑商。

这一天从数据库中隐藏实体的常用方法是通过ORM - 这样的库在数据库和对象模型之间进行调解,并代表您处理所有数据库交互。 ORM的示例包括Entity FrameworknHibernateDappermore