这些SQL查询之间的区别1)createSQLQuery(查询); 2)createQuery 3)jdbcTemplate.queryForList(query);

时间:2014-04-04 14:56:34

标签: java mysql sql

您可以通过简单示例向我解释一下,以下用于执行SQL查询的Java代码之间的区别:

getSession().createSQLQuery(query);

getSession().createQuery

jdbcTemplate.queryForList(query);

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

我们在我们的应用程序中使用MySql数据库,hibernate和spring mvc。

我也在我的应用程序中找到了以上3种类型的查询。所以有点困惑,比如我们必须使用哪种类型的查询。

1 个答案:

答案 0 :(得分:0)

getSession()。createQuery() - 适用于JP-QL或HQL

getSession()。createSQLQuery() - 对于本机sql

jdbcTemplate.queryForList(查询); - 对于本机sql。它是一个Spring方便的jdbcTemplate,有助于避免更多编码,如连接打开/关闭,异常处理等等。

选项#1:可在不同的数据库供应商之间移植。所以我们应该更喜欢JPA / Hibernate代码中的第一种方法。

选项#2:如果您无法使用第一个选项进行管理,则可以将seconf选项与本机sql一起使用(例如Oracle DB)。但是,如果你转移到像MySQL这样的另一个数据库供应商,这是不可移植的。

选项#3:如果您正在处理纯JDBC代码,请使用此代码。

相关问题