HQL是Hibernate Query Language的缩写,提供更加丰富灵活、更为强大的查询能力;HQL更接近SQL语句查询语法。
一、hql与sql的区别:
1、首先 hql 是面向对象查询,sql 是面向数据库表查询。
2、hql 区分大小写,sql 不区分大小写。
3、在语法上
hql :from 后面跟的 类名+类对象, where 后用对象的属性做条件。
增删改直接调用封装好的save()、delete()、update()方法。
sql: from 后面跟的是表名,where 后 用表中字段做条件查询。
4、hql中 select * 可以省略。
二、在Hibernate中推荐使用hql语句,不建议直接使用sql。
原因:
1、sql不是以面对对象的方式操作数据库,这是Hibernate不提倡的。
2、如果编写了某种数据库特有的函数或语法,那么在更换数据库时肯定要修改源码重新编译。
三、Hibernate把hql编译成sql语句传送到数据库进行查询。
在执行效率方面,不考虑其它的影响, 一般sql 效率要高于 hql ,如果考虑 缓存,关联映射,语句的质量就要看具体情况,不过sql 的功能是比hql大。