Java.Hibernate.Beginner.What is HQL (Hibernate Query Language)?

HQL (Hibernate Query Language) is Hibernate’s object-oriented query language that lets you query your database using your Java entity and property names, rather than database table or column names.

🔹 Key points:
✅ HQL is similar to SQL in syntax but works with entities, not tables, and fields, not columns.
✅ It’s database-independent — Hibernate translates HQL to the appropriate SQL dialect for your configured database.
✅ Supports powerful features like joins, group by, subqueries, and aggregate functions.
✅ Safer and more maintainable than raw SQL because it’s tightly integrated with your Java model.

🔹 Basic example:

Session session = sessionFactory.openSession();

String hql = "FROM User WHERE username = :username";
User user = session.createQuery(hql, User.class)
                  .setParameter("username", "john")
                  .uniqueResult();

✅ Here:

  • FROM User uses the Java entity name, not the table name.
  • username is the entity’s property name.

🔹 Benefits of using HQL:
✅ Avoids hardcoding table or column names → reduces risk of mismatches when database schema changes.
✅ Lets you write database-agnostic queries — Hibernate handles translating HQL into the SQL your RDBMS understands.
✅ Supports polymorphic queries (e.g., queries across entity hierarchies).

🔹 Example with join:

String hql = "SELECT o FROM Order o JOIN o.customer c WHERE c.name = :name";
List<Order> orders = session.createQuery(hql, Order.class)
                            .setParameter("name", "Alice")
                            .list();

HQL is Hibernate’s powerful, entity-based query language, letting you write object-oriented, database-independent queries that operate on your mapped domain model.

This entry was posted in Без рубрики. Bookmark the permalink.