当您拥有ORM时,存储库模式有什么好处?存储库模式与ORM
例子。假设我有以下的(虚构的)表:
表:用户
pk_user_id
fk_userrole_id
username
表:的UserRole
fk_userrole_id
role
现在用的ORM我可以简单地把这个模型中文件:
$user = ORM::load('users', $id);
现在$ USER已经是我的对象,它可以很容易地延迟加载:
(如果事情是自动单/多元状态会更好)
foreach ($user->userroles()->role as $role)
{
echo $role;
}
现在用Repository模式我” d必须为用户创建一个存储库,为角色创建一个存储库。存储库还需要各种函数来为我检索数据并存储它。另外它需要与实体模型一起工作。所以我也必须创造所有这些。
对我来说,看起来像很多东西做...当我可以简单地得到像我上面描述的数据与ORM。我可以像存储它一样简单:
ORM :: store($ user);
在这种情况下,它不仅会将用户对象存储到数据库,而且还会对“角色”对象进行任何更改。因此,没有必要像你需要使用存储库模式的任何额外的工作...
所以我的问题主要是,为什么我会想使用一个存储库模式与ORM?我已经看过教程在哪里使用该模式(比如Doctrine)。但它对我来说真的没有任何意义......任何与ORM结合使用的任何解释.. ??
ORM是一个反模式。 http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern – GordonM 2012-04-14 17:24:17
我真的不能说我同意这个帖子。特别是与现代的手镯。它为你延迟关系,你可以很容易地指定你想要的列(如果你需要)。 – w00 2012-04-14 18:45:42
@ w00在你看来,你并不孤单......在这里可以看到Repository作为反模式的一些讨论:http://ayende.com/blog/3955/repository-is-the-new-singleton – ngm 2012-04-14 19:20:50