这是我的情况。我注意到当你在每个使用它们的函数中嵌入查询时,代码变得难以维护。有些查询往往增长得非常快,并且在连接每一行后往往会失去可读性。所有连接附带的另一个问题是,您必须测试特定查询并粘贴它。您被迫删除所有“将查询字符串保存在一起的所有内容。
所以我的问题是,用什么方法将查询与代码分开?我尝试过搜索,但看起来不是正确的,因为我找不到相关内容。
我想请注意,由于我的查询从生产数据库中获取数据,因此无法查看视图和存储过程。
谢谢。
答案 0 :(得分:4)
如果您关注MVC pattern,那么您的查询应该都在模型中 - 即代表实际数据的对象。
如果没有,那么您可以将所有重复查询放在脚本文件中,包括每个请求中只需要的那些。
然而,连接和那种东西很难摆脱;这就是程序员存在的原因:))
答案 1 :(得分:4)
这两个词将是你最好的朋友:存储过程
答案 2 :(得分:3)
我通过在表示存储在表中的实体的类中包装查询来避免此问题。所以accounts表有一个Account对象。它将有一个插入/更新/删除查询。
我见过查询存储在文件中的地方,模板用于替换部分查询。
Java有一种叫做SQLJ的东西 - 不知道它是否曾经起飞过。
LINQ也可能提供一些解决方案。
答案 3 :(得分:3)
冒着被指责没有回答这个问题的风险,我给你的建议就是不这样做。使用您选择的O / RM,您会立即看到此问题消失。
答案 4 :(得分:2)
我通常创建一个数据类,表示数据库中表示的对象的数据要求。因此,如果我有一个客户类,那么我创建一个customerData类,其中包含所有数据访问逻辑。这使数据逻辑远离实体类。您可以在此处添加所有CRUD方法以及自定义数据方法。
根据您的语言,您还可以使用存储过程或ORM工具。
主要关键是让您的数据逻辑远离您的业务和实体逻辑。
答案 5 :(得分:0)
我在生产环境中使用存储过程,我们也处理行......