ActiveRecord模式是什么

疑惑二号疑惑二号 in 问答 2022-01-20 14:39:50

ActiveRecord 也属于 ORM(对象关系映射)层,由 Rails 最早提出,遵循标准的 ORM 模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。

ActiveRecord 的主要思想是:

  1. 每一个数据库表对应创建一个类,类的每一个对象实例对应于数据库中表的一行记录;通常表的每个字段在类中都有相应的 Field;
  2. ActiveRecord 同时负责把自己持久化,在 ActiveRecord 中封装了对数据库的访问,即 CURD;;
  3. ActiveRecord 是一种领域模型(Domain Model),封装了部分业务逻辑;

ActiveRecord 比较适用于:

  1. 业务逻辑比较简单,当你的类基本上和数据库中的表一一对应时, ActiveRecord 是非常方便的,即你的业务逻辑大多数是对单表操作;
  2. 当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script),把跨表事务提升到事务脚本中;
  3. ActiveRecord 最大优点是简单, 直观。 一个类就包括了数据访问和业务逻辑. 如果配合代码生成器使用就更方便了;
    这些优点使 ActiveRecord 特别适合 WEB 快速开发。

ActiveRecord 不适合于:

  1. ActiveRecord 虽然有业务逻辑, 但基本上都是基于单表的. 跨表逻辑一般会放到当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script)中. 如果对象间的关联越来越多, 你的事务脚本越来越庞大, 重复的代码越来越多, 你就要考虑 Domain Model + O/R Mapper 了;
  2. ActiveRecord 保存了数据, 使它有时候看上去像数据传输对象(DTO). 但是 ActiveRecord 有数据库访问能力, 不要把它当 DTO 用. 尤其在跨越进程边界调用的时候, 不能传递 ActiveRecord 对象。
-- End --

相关推荐