我正在使用Spring JdbcDaoSupport开发DAO,并想知道是否有人可以建议从Java代码中外部化SQL的最佳实践。
我习惯于将Hibernate和iBatis用于这种项目,就像查询不在Java代码中保存一样。由于数据访问的复杂性(访问不同服务器上的不同数据库)我不能在这个项目中使用像Hibernate / JPA / iBatis 这样的框架,并且觉得JDBC更适合。
我考虑过注入查询,但这会导致可怕的Spring配置文件,我的单元测试配置将成为管理的负担。我真的不想为此编写XML解析器,当值被分割为多行时,属性文件会变得有点混乱。
有什么建议吗?
答案 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 {
...
}