Active Record(中文名:活动记录)是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表而模型类的一个实例对应表中的一行记录。Active Record 和 Row Gateway (行记录入口)十分相似,但前者是领域模型,后者是一种数据源模式。关系型数据库往往通过外键来表述实体关系,Active Record 在数据源层面上也将这种关系映射为对象的关联和聚集。

Active Record 适合非常简单的领域需求,尤其在领域模型和数据库模型十分相似的情况下。如果遇到更加复杂的领域模型结构(例如用到继承、策略的领域模型),往往需要使用分离数据源的领域模型,结合 Data Mapper (数据映射器)使用。

Active Record 驱动框架一般兼有 ORM 框架的功能,但 Active Record 不是简单的 ORM,正如和 Row Gateway 的区别。著名的例子是全栈(Full Stack) Web 开发框架 Ruby on Rails ,其默认使用一个纯 Ruby 写成的 Active Record 框架来驱动 MVC 中的模型层。

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对象。

7.Active Record相关推荐

  1. Active Record

    class Data extends CI_Controller {function index(){echo 'Hwllo DBer';}//多结果标准查询(对象形式)function select ...

  2. C++异常实现与longjmp, setjmp,栈指针EBP, Active Record

    这篇讲的不错: http://blog.csdn.net/smstong/article/details/50728022 首先Active Record 然后EBP,ESP等指针 2 通过setjm ...

  3. Castle Active Record for .NET2.0快速入门示例

    一.创建Web工程 创建一个Web站点或者Web应用程序,添加对Castle.ActiveRecord.dll的引用. 二.创建需要持久化的业务实体 在.NET2.0下,由于引入了泛型,创建业务实体比 ...

  4. Active Record 数据验证

    数据验证概览 为什么要做数据验证 数据验证确保只有有效的数据才能存入数据库,在模型中做验证是最有保障的,只有通过验证的数据才能存入数据库.数据验证和使用的数据库种类无关,终端用户也无法跳过,而且容易测 ...

  5. Active Record Query Interface 数据查询接口(界面) 看到第8节。

    http://guides.rubyonrails.org/active_record_querying.html ✅How to find records using a variety of me ...

  6. php activerecord,Yii2 优雅的 Active Record

    这篇文章我们来看看在 Yii2 之中的 Active Record,为啥要将 Active Record 单独出来说呢?因为个人认为这是 Yii(不管是 Yii1.1 还是 Yii2)最强大的一部分功 ...

  7. Android开源库--ActiveAndroid(active record模式的ORM数据库框架)

    Github地址:https://github.com/pardom/ActiveAndroid 前言 我一般在Android开发中,几乎用不到SQLlite,因为一些小数据就直接使用Preferen ...

  8. DAL、DAO、ORM、Active Record讲解

    目录 模型(Model) 持久层(Persistence) DAL(Data Access Layer,数据访问层) DAO(Data Access Object,数据访问对象) ORM(Object ...

  9. Active Record 数据库迁移总结

    占位符! 转载于:https://www.cnblogs.com/mahong-shaojiu-ruby/p/5098150.html

  10. mysql gitd 主从搭建_Yii2 优雅的 Active Record - SegmentFault 思否

    说明: 环境 mysql-master:172.16.200.43 mysql-slave:172.16.200.44 系统:centos7 版本:MySQL5.6.35 一.基于GTID复制环境的搭 ...

最新文章

  1. 映射date类型_JPA 日历映射到日期示例
  2. Brian Kelly:比特币现金发展基金是大利好,现在正是买入时机
  3. 关于Exception类
  4. 卷积神经网络CNNs 为什么要用relu作为激活函数?
  5. P4989-二进制之谜【堆,贪心】
  6. primefaces_轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)
  7. mysql source code_Source Code
  8. csh远程登录服务器,ubuntu远程连接服务器某一个用户(非root用户)出现sh: 1: source: not found...
  9. 3d 室内地图_微软科研人员欲通过3D点云混淆技术保护AR定位隐私
  10. 科软-信息安全实验3-Rootkit劫持系统调用
  11. 【J2ME笔记】关于J2ME Image图片指定颜色透明化
  12. 初识人工智能,机器学习,深度学习的关系(概念)
  13. 计算机毕业设计springboot+vue+elementUI高校志愿者管理系统(源码+系统+mysql数据库+Lw文档)
  14. 五十九秒的秒表C语言程序,单片机试验00-59秒计时器(利用软件延时)
  15. mac mysql mysqldb_在 Mac 中安装 MySQLdb (Python mysql )
  16. LeetCode 对角线遍历(找规律)
  17. 74hc165C语言程序,74hc165使用方法(74hc165功能_内部结构图_时序图)
  18. 用javascript统计字数,中文计数问题
  19. 刨根问底 HTTP 和 WebSocket 协议(上)
  20. hive取当前周的周一

热门文章

  1. PE-2 暴模...
  2. 《python源代码分析》笔记 pythonVM一般表达式
  3. 2019年老电脑E5450+硬改775 无故死机故障排除记录
  4. python学习笔记之hashlib
  5. 非旋Treap——维护数列
  6. bzoj1003 [ZJOI2006]物流运输
  7. Java包装类介绍与类型之间相互转换
  8. 轻松解决U盘拷贝文件时提示文件过大问题
  9. 使用ILSpy软件反编译.Net应用程序的方法及注意事项
  10. 关于程序分析和代码编写