Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 在数据类中进行数据库查询是一个好主意吗?_Oop - Fatal编程技术网

Oop 在数据类中进行数据库查询是一个好主意吗?

Oop 在数据类中进行数据库查询是一个好主意吗?,oop,Oop,如果我将数据库查询放在一个表示真实对象的类中,这是否违反了实体不能访问数据源的设计规则 这里有一个例子 class User { public function register { } private function save_user_data() { // database queries here, either in AR or ORM } } 就我个人而言,我认为保存类的责任应该由它自己承担,但是执行保存到数据库的实际代码应该进入数据访问层的类中

如果我将数据库查询放在一个表示真实对象的类中,这是否违反了实体不能访问数据源的设计规则

这里有一个例子

class User
{
  public function register
  {
  }

  private function save_user_data()
  {
    // database queries here, either in AR or ORM
  }
}

就我个人而言,我认为保存类的责任应该由它自己承担,但是执行保存到数据库的实际代码应该进入数据访问层的类中。

很明显,是的。但真正的问题是这条规则重要吗?我想这要看情况了

就个人而言,我只是使用ORM为我生成所有这些东西。LLBLGen.

引用Steve McConnell(代码完成[1,2]):

软件的主要技术要求是管理复杂性

如果您正在编写一个大型应用程序,从长远来看,它将降低抽象数据访问的复杂性。如果您正在编写一个中小型应用程序,那么在对象本身中进行数据访问可能更有意义,只要您清楚且一致


以合理的方式降低复杂性。

如果您有一条规定“实体不得访问数据源”的设计规则,并且您创建了一个可以访问其数据源的实体,那么我会说该规则已被违反。你不是想问这样的事情是不是一个好主意吗?我可能是这个意思…嗯…但是如果我使用ORM,那意味着ORM库为我做查询。将ORM方法放在那个类中与在那个类中放置查询相同吗?