2011-08-09 44 views
0

這個問題讓我今天,我的倉庫應該總是返回完整的對象?他們不能返回部分數據(例如在數組中)?存儲庫應該總是返回對象?

例如,我有方法getUserFriends(User $user)我的倉庫裏面Friends,這個方法我執行以下DQL:

$dql = 'SELECT userFriend FROM Entities\User\Friend f JOIN f.friend userFriend WHERE f.user = ?0';

可是這樣一來,我回來了用戶的實體,包含所有屬性生成的SQL是用戶表中所有字段的SELECT。但是,讓我們說我只需要用戶的朋友的ID和名稱,會有更多有趣(快速)得到這些值?

$dql = 'SELECT userFriend.id, userFriend.name FROM Entities\User\Friend f JOIN f.friend userFriend WHERE f.user = ?0';

這些方法在我的服務類執行。

回答

1

從數據庫的角度來看,性能不會受到字段數量的很大影響,除非要返回的行數真的很大(可能是數百萬行):db最難的部分是使數據庫關節,並從表中構建結果集。

從php的角度來看,這取決於多種因素,如複雜性和創建對象的數量。

我會以不同的方式解決問題:我會剖析並強調測試我的代碼,以便查看性能是否存在問題,並決定僅在需要時進行重構(從教義切換到手工模型是耗時,性能增益是否值得呢?)

編輯:並回答你最初的問題:獲取完整的對象將導致更容易的緩存,如果需要的話,和更好的數據封裝。我會保持這些,直到他們代表一個很大的性能問題。

相關問題