當您擁有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