SQL vs HQL
Structured Query Language, also popularly known as SQL, is a database language that uses the concept of relational database management to manage the data. The managing of the data includes select (retrieves the data from a single or multiple tables), insert (adds one or more rows in a table), update (responsible for changing the value of one or more rows in a table), delete (responsible for deleting one or more rows in a table) and schema creation through queries.
HQL, or Hibernate Query Language, extends the concept of object-oriented programming to existing SQL. It is easy to learn and similar in syntax to SQL. It has features like aggregate functions and group by or order by clauses that you see often in SQL.
Some features of HQL:
It represents SQL queries in the form of objects and its properties that are the base of object-oriented programming.
The query result is not plain data but a combination of objects that can be modified programmatically. HQL even returns the child objects as part of the query result.
It contains concepts like pagination, dynamic profiling, et al. that are unknown to SQL developers.
You write database-type independent queries in HQL that are converted into SQL queries at runtime.
It implements all OOP concepts including inheritance.
Differences between SQL and HQL:
SQL is based on a relational database model whereas HQL is a combination of object-oriented programming with relational database concepts.
SQL manipulates data stored in tables and modifies its rows and columns. HQL is concerned about objects and its properties.
SQL is concerned about the relationship that exists between two tables while HQL considers the relation between two objects.
Summary:
1. HQL is similar to SQL and is also case insensitive.
2. HQL and SQL both fire queries in a database. In the case of HQL, the queries are in
the form of objects that are translated to SQL queries in the target database.
3. SQL works with tables and columns to manipulate the data stored in it.
4. HQL works with classes and their properties to finally be mapped to a table structure
in a database.
5. HQL supports concepts like polymorphism, inheritance, association, etc. It is a
powerful and easy-to-learn language that makes SQL object oriented.
6. SQL lets you modify the data through insert, update, and delete queries. You can add
tables, procedures, or views to your database. The permissions on these added objects
can be changed.