您可以通过简单示例向我解释一下,以下用于执行SQL查询的Java代码之间的区别:
getSession().createSQLQuery(query);
getSession().createQuery
jdbcTemplate.queryForList(query);
如果您也解释一下,我将不胜感激,在哪种情况下我们必须使用这三个中的哪个查询。
我们在我们的应用程序中使用MySql数据库,hibernate和spring mvc。
我也在我的应用程序中找到了以上3种类型的查询。所以有点困惑,比如我们必须使用哪种类型的查询。
答案 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代码,请使用此代码。