3

Spring JDBC 模板中似乎没有命名查询支持。命名查询是指在 java 代码中按名称引用 sql 语句并将实际语句保存在某个配置文件中的工具。

在没有开箱即用支持的情况下,我正在研究将 sql 语句保留在 java 代码之外的最佳方法。

以下是替代方案:

  1. 属性文件
  2. xml 属性文件
  3. spring 上下文 xml(依赖注入)

评论?

4

3 回答 3

5

Java - 将 SQL 语句存储在外部文件中

我做了一个系统,其中查询也存储在数据库中,这对于我们所需要的来说绝对完美,但非常有趣。进行查询查找的查询也在数据库中,当它崩溃时引起了极大的欢笑(不要问)。

于 2011-09-29T12:22:58.257 回答
3

您认为作为替代方法的所有方法都可以使用,但是如果您将语句从 Java 类中移出,那么您正在为您的设计添加额外的层,这对我来说是不必要的。考虑将语句保留在Java 类之外的开销。

  • 将加载属性和 XML 以获取单个语句。
  • Inject 会将不必要的语句注入到类中。

如果我是你,我将创建一个类并将语句列在 static final 中。这使其透明,避免不必要的层,并使其对将来维护您的代码的人具有灵活性。

例子:

//This does the job
public class SQLStatements
{
  static public final String GET_NAME="SELECT Name FROM some_table WHERE ID=?";
}
于 2011-09-29T12:18:20.920 回答
0

我更愿意将所有 SQL 查询存储在属性或 xml 文件中。然后在程序启动时获取所有查询并将它们存储在 Map 或 Properties 对象中。

这提供了即使在代码部署之后更改查询的可行性。我们可以更改属性文件中的查询,然后重新启动应用程序。

于 2020-10-16T14:25:39.940 回答