使用Spring的JdbcTemplate类时,在哪里保留大型SQL查询

时间:2010-10-05 10:16:52

标签: java spring jdbc

我正在使用Spring JdbcDaoSupport开发DAO,并想知道是否有人可以建议从Java代码中外部化SQL的最佳实践。

我习惯于将Hibernate和iBatis用于这种项目,就像查询不在Java代码中保存一样。由于数据访问的复杂性(访问不同服务器上的不同数据库)我不能在这个项目中使用像Hibernate / JPA / iBatis 这样的框架,并且觉得JDBC更适合。

我考虑过注入查询,但这会导致可怕的Spring配置文件,我的单元测试配置将成为管理的负担。我真的不想为此编写XML解析器,当值被分割为多行时,属性文件会变得有点混乱。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

可以使用Hibernate的本机SQL查询。 See here

否则,您可以将查询存储在.properties个文件中,然后将它们加载到应用程序范围Map中,然后将其注入到bean中。

您还可以使用您选择的某种XML格式,并使用commons-configuration轻松解析。

答案 1 :(得分:1)

如何使用JPA注释将(更复杂的)查询存储为域对象上的命名查询?

@Entity
@Indexed
@NamedQueries(
    @NamedQuery(name = "MyDomainObject.myNamedQuery", query = "select id from    MyDomainObject where myProperty.id = :propertyId")
)
public class MyDomainObject {
   ...
}