不同类型的SQL查询之间的清晰度 1)创建SQLQuery(query);2) createQuery 3) jdbcT



嗨,任何人都可以用简短的例子来解释我,以下SQL查询之间的区别:

  1. getSession().createSQLQuery(query);

  2. getSession().createQuery

  3. jdbcTemplate.queryForList(query);

如果您还解释一下,在哪种情况下我们必须使用这三个查询中的哪个查询,我将不胜感激。

每个问题的简短回答:

  1. getSession().createSQLQuery(query)在这里,您将本机 SQL 查询字符串传递给该方法,该方法将按原样执行它。 请注意,这需要对基础数据库进行有效的本机 SQL 查询(请注意数据库的特定功能)
  2. getSession().createQuery在这里传递一个 HQL 查询。 这是特定于 Hibernate 的查询格式,您可以在其文档中找到:http://docs.jboss.org/hibernate/core/4.3/manual/en-US/html/ch16.html
  3. jdbcTemplate.queryForList(query)这与第一个类似,因为它接受本机 SQL 查询。

请记住,Hibernate会话和模板的Spring持久性管理是不同的东西(尽管两者都可以互补)。

如果您的应用程序依赖于 ORM(如 Hibernate),则您的选择是 2)。 如果您的选择是ORM,您可能也想考虑条件(您可以在代码的不同部分选择标准或HQL,因为两者都依赖于您的实体配置并带来不同的优势)。 有关条件查询的一些信息:http://docs.jboss.org/hibernate/core/4.3/manual/en-US/html/ch17.html

如果您打算通过您的应用程序使用本机 SQL,我会选择 3) 并依靠 Spring 模板功能来获得舒适感。

最新更新