持续更新中,今天修(QingDaoU/GXUOJ)/Onlinejudge的bug去了
DAO和ORM的概念辨析
DAO
DAO(data access object,数据访问对象),是一个面向对象的数据库接口。Data Access Object Pattern(数据访问对象模式) 实际上是将一个项目系统分层结构的角度出发的概念,他将更高层次的对数据源的访问、修改操作抽象封装了在较低的层次。
ORM
ORM(Object Relational Mapping,对象关系映射),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换,通过类与数据库表的映射关系,将对象持久化到数据库中。
两者差异
按照我的理解,DAO将我们所有更高层次对数据库的操作(由一系列多条语句组合而成)都封装了起来。其并不关乎我们如何具体的去操作数据库,不论是ORM还是直接写SQl语句等,都可以是DAO。
而ORM只是将我们对数据库操作的实现细节(一系列多条语句操作中的一条)封装了起来,可以让我们远离大量的写SQL语句,提高开发效率。
因而DAO在实现其面向对象的数据库接口中可以用到ORM完成其一部分的细节实现,然而由于ORM一般都会带来更多的系统开销,在部分对性能有要求的场景下,还是需要采取手写SQL语句等方式。