https://culttt.com/2014/06/18/whats-difference-active-record-data-mapper/
什么是ORM
Object Relational Mapper,数据库和应用中间的一层。面向对象程序操作的是对象,而像MySQL等数据库存储为实体-关系,对象和实体关系间就需要相互转换,ORM所做的就是这件事。
active record和data mapper
ORM最流行的实现模式有两种,active record和data mapper。
active record示例代码:
$user = new User;
$user->username = ‘philipbrown’;
$user->save();
对象映射为数据库的一行。
对象属性和数据库字段按照database schema映射。
data mapper示例代码:
$user = new User;
$user->username = ‘philipbrown’;
EntityManager::persist($user);
领域对象不需要知道它们在数据库中是怎么存的,
二者的选择
没有谁比谁好,只有适不适合。
简单的CRUD、试水型的demo项目,用active records模式的ORM框架更好。
业务流程和规则较多的、成熟的项目改造用data mapper型,其允许将业务规则绑定到实体。
说明:原文中提到的laravel为PHP开发框架。