HQL是一种面向对象的查询语言,其格式与SQL类似。HQL和ODMG的OQL以及EJB-QL类似,但是与OQL不同的是,它用在SQL数据库的环境中,而且提供了比EJB-QL更强大的功能。只要你有一点SQL的基础就能很容易的学习HQL。
HQL并不像SQL那样是一种获取数据的语言。它用来获取对象,而不是更新或者插入或者删除。对象状态的同步是持久化管理器的功能而不是开发者的。
大部分时间里,你只需要取得一个特定类的对象。例如,下面的查询就取得一个user:
HQL很强大,尽管你不一定经常用到它的高级特性,它们经常被用来处理一些比较难的问题。例如:
1)能够遍历对象图。
2)可以只取得实体的属性,而不需要装载整个实体本身。
3)对查询结果排序。
4)对查询结果进行分页。
5)可以使用group by,having,sum,min。
6)通过外连接取得多个对象。
7)调用用户定义的SQL。
8)子查询。
我们将在第7章讨论这些概念。