Spring JDBC 模板中似乎没有命名查询支持。命名查询是指在 java 代码中按名称引用 sql 语句并将实际语句保存在某个配置文件中的工具。
在没有开箱即用支持的情况下,我正在研究将 sql 语句保留在 java 代码之外的最佳方法。
以下是替代方案:
- 属性文件
- xml 属性文件
- spring 上下文 xml(依赖注入)
评论?
Spring JDBC 模板中似乎没有命名查询支持。命名查询是指在 java 代码中按名称引用 sql 语句并将实际语句保存在某个配置文件中的工具。
在没有开箱即用支持的情况下,我正在研究将 sql 语句保留在 java 代码之外的最佳方法。
以下是替代方案:
评论?
我做了一个系统,其中查询也存储在数据库中,这对于我们所需要的来说绝对完美,但非常有趣。进行查询查找的查询也在数据库中,当它崩溃时引起了极大的欢笑(不要问)。
您认为作为替代方法的所有方法都可以使用,但是如果您将语句从 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=?";
}
我更愿意将所有 SQL 查询存储在属性或 xml 文件中。然后在程序启动时获取所有查询并将它们存储在 Map 或 Properties 对象中。
这提供了即使在代码部署之后更改查询的可行性。我们可以更改属性文件中的查询,然后重新启动应用程序。