2011-07-10 25 views
17

数据访问对象和活动记录有什么区别?它们看起来是完全相同的,因为它们在应用程序和持久层之间建立了一个层,并使用SQL查询抽象出直接的数据库访问。活动记录和DAO之间的区别?

回答

17

数据访问对象(DAO)引用数据层中的一个对象,负责在您的域中保留一个单独的实体。活动记录是混合的,其中包含表中单个行值的类也负责查询,更新,插入和删除该表。 Active Record设计模式意味着您的对象与数据库中的表有一对一的映射关系。

18

A 数据访问对象(DAO)是专用于将模型/域对象持久化到数据源而不仅仅是数据层中的任何对象的接口。这是一个reference

ActiveRecord模式以类似的方式工作,但将持久性方法放在模型对象本身上,而DAO定义了离散接口。 DAO模式的优点是:

  • 它易于限定的持久性,例如,从一个数据库移动到云,而无需改变底层impelementation的另一个风格,而外部接口保持不变,因此不影响其他类。

  • 持久性问题模块化远离主模型对象的关注点。

ActiveRecord模式的优点是简单。

+0

我认为你的第一个子弹是不准确的。也许在某些实现中,但在其他实现中,完全有可能在不改变接口的情况下更改持久性机制(即使在运行时)relationdb,平面文件或Web服务......特别是如果该接口设计得很好(即它只是创建,读取,更新,删除)。不同之处在于(再次,取决于具体实现......因为这些特征可以混入多种语言中......) – Mainguy

+0

@Mainguy是的,如果语言提供了轻松动态(而非静态)mixins DAO目标可以被满足已经通过ActiveRecord。 –