🔹 Step-by-step example:
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
// Basic HQL query: fetch all User entities
String hql = "FROM User";
List<User> users = session.createQuery(hql, User.class).list();
for (User user : users) {
System.out.println("Username: " + user.getUsername());
}
tx.commit();
session.close();
🔹 Key points:
✅ FROM User
is an HQL statement selecting the entire User
entity — no need for SELECT
if you want the whole object.
✅ session.createQuery(hql, User.class)
creates a typed query returning List<User>
.
✅ Always execute inside an active transaction when reading or modifying data.
🔹 Adding filtering with parameters:
String hql = "FROM User u WHERE u.username = :username";
User user = session.createQuery(hql, User.class)
.setParameter("username", "john")
.uniqueResult();
if (user != null) {
System.out.println("Found user: " + user.getUsername());
}
🔹 What makes HQL powerful?
- You query entities and properties → not tables or columns.
- Hibernate translates HQL to database-specific SQL.
- It’s portable and works across supported databases without changing your queries.
✅ Key takeaway:
To create a basic HQL query:
1️⃣ Write an HQL string (e.g., FROM Entity
).
2️⃣ Pass it to session.createQuery()
.
3️⃣ Execute it with list()
, uniqueResult()
, or other query methods.