我在看DataMapper,乍一看似乎使用了ActiveRecord ORM模式.其他人说它使用DataMapper和/或Domain Object模式.
这些模式有什么区别?
这两种模式的主要区别在于:
在ActiveRecord中,您有一个域对象,它既知道所有业务逻辑,又知道如何在数据库中保存/更新自己,user.getLinkToProfile()和User :: find(1),User :: save(user)
在DataMapper模式中,您有一个包含所有业务逻辑的域对象,例如exmaple user.getLinkToProfile()(或类似的东西),但对所讨论的数据库一无所知,除此之外,您还有一个负责的mapper-object用于保存,更新,选择等数据库中的用户对象,其中包含UserMapper :: find(1),UserMapper.save(user)
DataMapper可能比ActiveRecord更复杂,但使用ActiveRecord开发域模型和数据库异常要容易得多.