原文地址:http://www.iteye.com/problems/9994
我个人的理解是这样的:
1.所谓DAO层一般是从系统分层结构出发来说的,即把数据存取操作到集中到DAO层,以便于维护和逻辑清晰,而且通常移植数据库的时候,如果系统合理分层了,则大部分工作将会集中在DAO层,这样比较容易操作
2.而ORM是针对开发而言的,就像面向过程和面向对象开发一样,是一种处理问题的方式。ORM的目的是使数据操作能像操作对象那样方便(其实有时候不一定更方便,更准确地说,应该是让程序员能够运用过面向对象的思想来操作数据对象),通常ORM会做到将数据库表映射成对象,封装一些基本的数据操作,以及提供一些如级联查询和保存之类帮助开发的扩展功能。
DAO层在实现时可以选择使用ORM框架,也可以使用直接的数据库操作,有时候因为性能要求只能直接操作数据的。
所以我认为DAO层是软件开发演变过程中对于分层概念的产物,目的是更清晰合理的管理软件开发过程过的代码和逻辑;而ORM是对数据操作思想的一种改变,不再是面对关系数据库中的表,而是统一视作对象。