在填充數據query object之後,是否應該有執行查詢的對象(填充的查詢對象作爲方法參數),還是對象應該自己執行查詢?描述一個查詢對象自己執行查詢嗎?
0
A
回答
1
真正的問題在這裏是:是否對如何查詢(也可能枚舉)數據源的責任屬於查詢對象?
答案往往不同的框架/解決方案之間變化,但至少對我來說,查詢對象應該代表你想要的數據應符合什麼樣的規範。這是它的主要責任。
它不應該知道如何通過任何數據API可用,而是應該利用由服務/組件,它知道如何映射查詢對象來使用任何後備存儲已接觸到DB。
通過這種方式,您可以利用不同的數據源和相同的查詢對象,並允許客戶端創建查詢規範對象並將其傳遞給服務器(可能比擁有大量參數的服務器方法更好)。
如果修改了數據訪問機制(如從原始SQL到Hibernate),那麼如果以這種方式完成查詢對象(查詢對象可能會有很多不同的查詢對象),那麼查詢對象將不得不進行更改 - 只有負責映射的對象查詢對象實際查詢將需要改變
2
別的東西應該執行查詢。
如果沒有您違反SRP作爲查詢封裝查詢的說明書和查詢的執行。
想想它是如何在LINQ-to-SQL中完成的。在LINQ-to-SQL中,您可以將表達式樹看作代表查詢規範,並由LINQ-to-SQL提供者來解釋表達式樹並將其轉換爲SQL。
所以它應該在這裏。如果您有查詢對象也執行查詢,那麼您已經將查詢規範與您執行查詢的位置的細節聯繫在一起。相反,它們應該是分開的,以便查詢對象可以在其他上下文中重用(查詢數據庫,查詢內存中的集合等)。再次,這就是它在LINQ中的樣子。表達式樹可以在LINQ-to-SQL,LINQ-to-objects和LINQ-to-XML中使用,沒有任何變化。
相關問題
- 1. SQL查詢到自己的自然語言描述
- 2. Laravel 5執行自己的查詢
- 3. 描述選擇查詢
- 4. 描述嵌套查詢
- 5. Mysql描述查詢行估計
- 6. Rails的查詢執行2個查詢
- 7. 在DataTable對象上執行LINQ查詢
- 8. SQL Server - 查詢執行索引掃描而不是查詢
- 9. foreach只執行一次查詢嗎?
- 10. 我需要將2個查詢合併爲一個查詢1個區域以查詢2個描述並查詢1個empl查詢2個employee_id
- 11. 自動執行mssql查詢?
- 12. 自動執行SQL查詢
- 13. 是一個IQueryable查詢還是隻能查詢一個對象?
- 14. 查詢執行全表掃描
- 15. django related_name查詢和自己不一樣的對象?
- 16. ASP.NET - 有沒有一個對象可以執行sql查詢?
- 17. 對自己的父OR查詢的ActiveRecord查詢
- 18. 播放2.2.2 Ebean - 錯誤獲取豆描述查詢一對多
- 19. 執行查詢
- 20. 執行查詢
- 21. 查詢執行
- 22. 查詢執行
- 23. 錯誤:描述=無效的查詢
- 24. AWS描述,實例查詢標籤
- 25. 查詢DBpedia的英語,只描述(SPARQL)
- 26. 在FROM子查詢中描述
- 27. 如何查詢表格的列描述?
- 28. 正則表達式查詢,描述
- 29. 我可以從LINQ對象內執行LINQ to SQL查詢嗎?
- 30. 查詢對象
我想similar.But Ayendes文章困惑我http://ayende.com/Blog/archive/2007/03/29/Query-Objects-vs.-Methods- On-The-Repository.aspx 他在查詢對象上使用find方法。 – user137348 2009-12-21 15:22:09