ActiveRecord是什么:
1. 每一个数据库表对应创建一个类.类的每一个对象实例对应于数据库中表的一行记录; 通常表的每个字段在类中都有相应的Field;
2. ActiveRecord同时负责把自己持久化. 在ActiveRecord中封装了对数据库的访问, 即CRUD;
3. ActiveRecord是一种领域模型(Domain Model), 封装了部分业务逻辑;
 
ActiveRecord与数据库耦合更紧;
 
 
定义:
1、Active Record pattern实现,它是指一个既包含数据又包含行为的对象,这些数据需要持久保存到对应的数据表中。Active Record一个很明显的特征是:将数据访问逻辑也包含在这个domain对象中,通过这种办法让人们可以知道如何从数据库读写数据。也就是将Dao中对数据库的CRUD方法和Domain Object整合在一起
ActiveRecord适用于:

1. 业务逻辑比较简单;当你的类基本上和数据库中的表一一对应时, ActiveRecord是非常方便的, 即你的业务逻辑大多数是对单表操作;
2. 当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script), 把跨表事务提升到事务脚本中;
3. ActiveRecord最大优点是简单, 直观; 一个类就包括了数据访问和业务逻辑. 如果配合代码生成器使用就更方便了;
4. 这些优点使ActiveRecord特别适合web快速开发, 而正是快速开发框架ROR采用了ActiveRecord, 并且很多类ROR框架如Castle的纷纷效仿才使ActiveRecord重新进入大家视线;
我想这也是为什么Martin Fowler在PoEAA中早就提出了这个模式, 但是直到最近两三年ActiveRecord才热起来可能就是这个原因;
ActiveRecord不适合于
1. ActiveRecord虽然有业务逻辑, 但基本上都是基于单表的. 跨表逻辑一般会放到当发生跨表的操作时, 往往会配合使用事务脚本(Transaction Script)中. 如果对象间的关联越来越多, 你的事务脚本越来越庞大, 重复的代码越来越多, 你就要考虑Domain Model + O/R Mapper了;
2. ActiveRecord保存了数据, 使它有时候看上去像数据传输对象(DTO). 但是ActiveRecord有数据库访问能力, 不要把它当DTO用. 尤其在跨越进程边界调用的时候, 不能传递ActiveRecord对象;
 
 
这个模式的技术架构:
UI(Form/Web网页):数据展示, 有控件, 或者完全的HTML标签, Jsp中还有EL
Datasource:数据提供者,提供给页面控件(元素)展示数据, Net有 SQLDatasource,ObjectDatasource
    Java有 JSP 对应的<jsp:bean>, <jsp:setProperty>, <jsp:getProperty> 等标签
    Zen框架中 QuerySource
BO:业务逻辑层, 实现:业务逻辑与算法,Entity类业务逻辑方法,数据验证, 生成DTO层对象等功能,
业务逻辑与Datasource之间的DTO层, 用来传输数据,这些数据可能是表、视图或者综合的一个POJO,对于简单数据可以与Entity共用一个类。
Entity层: 类与数据库之间的映射层, 对应的关系型数据库, 保存数据时转换成SQL语句, 对应Cache数据库使用它自己的代理方法
ActiveRecord: 技术框架层, 所有的Entity都继承此层的基类;本基类中包含了数据操作方法,封装了部分业务逻辑
    对应的产品: Net Castle的 ActiveRecord框架, Cache数据库的Persistent类的数据存储框架,
 

本文出处http://zhaocz.blog.51cto.com/542576/307894