我正在构建一个新的应用程序,无法决定在这个问题上采用哪种方式。
面向数据库数据的类是否应该使用以下方法从数据库构建自己:
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);
我之前曾在两个方面都做过项目,但是无法真正决定在这个新项目上采用哪种方式,并想知道今天的普遍共识是什么?
我的意思是他们两种方式都有优点和缺点,但对此采用的方法是什么?他们可以指出我们的任何既定模式吗?
答案 0 :(得分:1)
让实体直接联系数据库违反了separation of concerns - 这意味着除了自己的工作之外,该类正在进行一些数据库工作,这不是它的关注点。
改为拥有工厂/建筑商。
这一天从数据库中隐藏实体的常用方法是通过ORM - 这样的库在数据库和对象模型之间进行调解,并代表您处理所有数据库交互。 ORM的示例包括Entity Framework,nHibernate,Dapper和more。