ruby-on-rails ActiveRecord模式与域对象或数据Map器模式有何不同?

zlwx9yxi  于 12个月前  发布在  Ruby
关注(0)|答案(2)|浏览(158)

我看的是DataMapper,乍一看它似乎使用了ActiveRecord ORM模式。其他人说它使用了DataMapper和/或Domain Object模式。
这两种模式有什么区别?

jhdbpxl9

jhdbpxl91#

这两种模式的主要区别是:

  • 在ActiveRecord中,有一个域对象,它知道所有的业务逻辑以及如何在数据库中保存/更新自己,user.getLinkToProfile()User::find(1)User::save(user)
  • 在DataMapper模式中,你有一个域对象,它包含所有的业务逻辑,例如user.getLinkToProfile()(或类似的东西),但对所讨论的数据库一无所知,除此之外,你还有一个Map器对象,它负责保存,更新,选择等数据库中的用户对象,这些对象将包含UserMapper::find(1)UserMapper.save(user)

DataMapper可能比ActiveRecord更复杂,但它比ActiveRecord更容易异步开发域模型和数据库。

tpxzln5u

tpxzln5u2#

活动记录非常繁重,数据Map器和域对象将这些关注点分离出来,因此您有一组更定义的代码为您的“域”或“实体”对象执行各个方面。
我个人更喜欢,不是你问的,与域对象,数据Map器的分离,可能使用组装模式,甚至数据传输模式,以确保数据库和应用程序的上层之间发生的数据的清晰分离。
.优雅和简单的分离总是有帮助的。

相关问题