活动记录(Active Record)
一个对象,它包装数据库表或视图中的某一行,封装数据库访问,并在这些数据上增加了领域逻辑
对象中既有数据又有行为。这些数据大多是持久数据、并且需要保存到数据库。
运行机制
- 活动记录的本质是一个领域模型,这个领域模型中的类和基数据库中的记录结构十分吻合。每条活动记录负责和数据库进行交互,处理领域逻辑。
- 某些面向数据的代码在活动记录中,而某些领域逻辑在事务脚本中。
- 活动记录通常具有下列方法:
- 由SQL结果集中的一行构造一个活动记录实例
- 为将来对表的插入构造一个新的实例
- 用静态查找方法来包装常用的SQL查询和返回活动记录。
- 更新数据库并将活动记录中的数据插入数据库
- 获取或设置域
- 实现部分业务逻辑
- 活动记录和行数据入口十分类似。二者的主要差别是:行数据入口仅有数据库访问而活动记录既有数据源逻辑又有领域逻辑。
使用时机
- 适用于不太复杂的领域逻辑,如创建、读、更新和删除。
- 活动记录容易创建易于理解,但问题在于仅当活动记录对象和数据库中表直接对应,即同构模式时,活动记录才比较有效。
- 活动记录要求和数据库结构设计紧密耦合,为重构带来困难。
活动记录示例
建立类,及和类同构的表结构