可能重复:
What is the difference between Data Abstraction Layer & Data Acess Layer?
我刚刚在nettuts上阅读了this article。我有点困惑。 数据访问层与数据库抽象层之间有什么区别?
另外,我应该为此制作自己的自定义类,还是使用PDO更好?
我有一个类DatabaseOps
,它执行所有CRUD操作。其他类(例如User)继承自它,并使用此类中的方法来执行CRUD操作。我有另一个名为Database
的类,它执行开放连接,关闭连接,获取数组,确认查询等。
我应该将它们写入单个类(数据访问/抽象层)吗?哪一个更好?
答案 0 :(得分:6)
数据访问层通常采用ORM的形式。这允许您将表映射到对象。它提供了高级抽象,因此您不必担心原始sql。 http://en.wikipedia.org/wiki/Data_access_layer
数据抽象层创建一个api,使数据访问后端独立。无论您使用的是postgres,mysql,sqlite等,它都可以让您查询这些数据库,而无需担心具体细节。 http://en.wikipedia.org/wiki/Database_abstraction_layer
如果您正在创建一个其他人可以使用的平台,并且他们可以选择他们的数据库后端,则需要一个抽象层,否则我不会担心它。
每当我对Web项目结构有疑问时,我总是会看一下流行的MVC框架,看看他们是如何处理这些问题的。 CakePHP,CodeIgniter,Kohana都是如何创建可扩展面向对象框架的很好的例子。在涉及到这样的问题时,它们是不可或缺的资源。
答案 1 :(得分:2)
我不是一个完美的程序员,但是从我所看到/学到的东西来看,责任分离是很重要的。这就是为什么抽象层被如此重要地教导的原因。
这就是我看待它的方式。问这些问题......
在我看来,如果我不得不回答这些问题,我会将这两个课程放在一起。这样,如果您的数据库确实发生了变化,您可以相当轻松地添加一个新的抽象层来调用具有访问权限和CRUD命令,而不是创建两个不同的类。
P.S。好问题! 1