YII2.0的DAO/ActiveRecord是干什么的?是如何工作的?底层原理是什么?

Yii 2.0框架中的DAO(Data Access Objects)和ActiveRecord是用于处理数据库访问和数据操作的两种不同的方式。

DAO(Data Access Objects)

作用: DAO 提供了一种直接操作数据库的方式,允许开发者使用原生的SQL语句或者预定义的方法执行数据库操作。

工作原理:

  1. 数据库连接: DAO 通过 Yii 2.0 的数据库连接组件建立与数据库的连接。
  2. SQL执行: 开发者可以使用 DAO 提供的方法(如 createCommand())创建和执行原生的 SQL 查询或命令。
  3. 数据获取: DAO 返回查询结果集,可以是数组、单行记录或者标量值,开发者可以根据需求自行处理结果。

底层原理:

  • DAO 实际上是通过 Yii 2.0 提供的数据库连接组件,如 yii\db\Connection,与数据库进行交互。它封装了执行SQL语句的过程,并提供了方法来获取和处理查询结果。
  • DAO 的底层原理包括数据库连接池管理、SQL语句的预处理和执行、结果集的获取和处理等。

ActiveRecord

作用: ActiveRecord 是一种对象关系映射(ORM)模式,将数据库表的行映射为对象,使得开发者可以通过操作对象来实现数据库的增删改查操作。

工作原理:

  1. 映射关系: 每个 ActiveRecord 类对应数据库中的一张表,类的属性对应表的列。
  2. 数据操作: 开发者可以通过创建和操作 ActiveRecord 对象来对数据库进行增删改查操作,而不需要直接编写SQL语句。
  3. 查询语言: Yii 2.0 提供了强大的查询构建器(Query Builder)和查询对象(Query),用于灵活地构建和执行复杂的数据库查询。

底层原理:

  • ActiveRecord 基于 Yii 2.0 的 ORM 层,通过 ActiveRecord 类实现了对数据库的抽象和封装。每个 ActiveRecord 对象代表数据库表中的一行记录,可以通过对象属性直接访问和修改数据库字段的值。
  • 底层原理包括模型类的定义、数据映射关系的建立、查询语句的构建与执行、数据持久化(保存、更新、删除)等。

总结

Yii 2.0 的 DAO 和 ActiveRecord 提供了不同的数据库访问和数据操作方式。DAO 更接近原生SQL操作,适用于需要直接控制和优化SQL语句的场景;ActiveRecord 提供了更高层次的抽象,使得数据库操作更易于管理和维护。它们都利用 Yii 2.0 框架提供的数据库连接和查询构建器来实现数据访问和操作,各自的底层原理涉及到数据库连接管理、SQL执行、数据映射和对象操作等方面。