Hibernate Query Language or HQL for short is
extremely powerful query language. HQL is much
like SQL and are case-insensitive, except for
the names of the Java Classes and properties.
Hibernate Query Language is used to execute
queries against database. Hibernate
automatically generates the sql query and
execute it against underlying database if HQL
is used in the application. HQL is based on the relational object models and makes the SQL
object oriented. Hibernate Query Language uses
Classes and properties instead of tables and
columns. Hibernate Query Language is
extremely powerful and it supports
Polymorphism, Associations, Much less verbose
than SQL.

There are other options that can be used while
using Hibernate. These are Query By Criteria
(QBC) and Query BY Example (QBE) using
Criteria API and the Native SQL queries
Features HQL:

Full support for relational
operations: HQL allows representing
SQL queries in the form of objects.
Hibernate Query Language uses
Classes and properties instead of
tables and columns.

Return result as Object: The HQL
queries return the query result(s) in
the form of object(s), which is easy
to use. These eliminate the need of
creating the object and populate the
data from result set.