在填充数据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