当您拥有 ORM 时,存储库模式有什么好处?
例子。假设我有以下(虚构的)表格:
表:用户
pk_user_id
fk_userrole_id
username
表:用户角色
fk_userrole_id
role
现在有了一个 orm 我可以简单地把它放在一个模型文件中:
$user = ORM::load('users', $id);
现在 $user 已经是我的对象,可以很容易地被延迟加载:
(如果事物自动单数/复数会更好)
foreach ( $user->userroles()->role as $role )
{
echo $role;
}
现在使用存储库模式,我必须为用户和角色创建一个存储库。存储库还需要各种功能来为我检索数据并存储它。此外,它需要与实体模型一起使用。所以我也必须创建所有这些。
对我来说,这看起来像很多东西......当我可以像上面描述的那样使用 ORM 简单地获取数据时。我可以很容易地存储它:
ORM::store($user);
在这种情况下,它不仅会将用户对象存储到数据库中,还会存储我对“角色”对象所做的任何更改。所以不需要像存储库模式那样做任何额外的工作......
所以我的问题基本上是,我为什么要使用带有 ORM 的存储库模式?我已经看过使用该模式的教程(例如 Doctrine)。但这对我来说真的没有任何意义......任何人对它与ORM结合使用的任何解释......?