📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.
🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
Hibernate Query Language Basics
FROM Clause
String hql = "FROM Student";
Query query = session.createQuery(hql);
List results = query.list();
String hql = "FROM net.javaguides.hibernate.entity.Student";
Query query = session.createQuery(hql);
List results = query.list();
AS Clause
String hql = "FROM Student AS S";
Query query = session.createQuery(hql);
List results = query.list();
String hql = "FROM Student S";
Query query = session.createQuery(hql);
List results = query.list();
SELECT Clause
String hql = "SELECT S.firstName FROM Student S";
Query query = session.createQuery(hql);
List results = query.list();
WHERE Clause
String hql = "FROM Student S WHERE S.id = 10";
Query query = session.createQuery(hql);
List results = query.list();
ORDER BY Clause
String hql = "FROM Student S WHERE S.id > 10 ORDER BY S.email DESC";
Query query = session.createQuery(hql);
List results = query.list();
String hql = "FROM Student S WHERE S.id > 10 " +
"ORDER BY S.firstName DESC, S.lastName DESC ";
Query query = session.createQuery(hql);
List results = query.list();
GROUP BY Clause
String hql = "SELECT SUM(S.is), E.firtName FROM Student S " +
"GROUP BY S.college";
Query query = session.createQuery(hql);
List results = query.list();
Using Named Parameters
String hql = "FROM Student S WHERE S.id = :student_id";
Query query = session.createQuery(hql);
query.setParameter("student_id",10);
List results = query.list();
UPDATE Clause
String hql = "UPDATE Student set firstName= :firstName " +
"WHERE id = :student_id";
Query query = session.createQuery(hql);
query.setParameter("firstName", 1000);
query.setParameter("student_id", 10);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
DELETE Clause
String hql = "DELETE FROM Student " +
"WHERE id = :student_id";
Query query = session.createQuery(hql);
query.setParameter("student_id", 10);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
INSERT Clause
String hql = "INSERT INTO Student(firstName, lastName, email)" +
"SELECT firstName, lastName, email FROM old_student";
Query query = session.createQuery(hql);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
Aggregate Methods
- avg(property name) - The average of a property's value
- count(property name or *) - The number of times a property occurs in the results
- max(property name) - The maximum value of the property values
- min(property name) - The minimum value of the property values
- sum(property name) - The sum total of the property values
String hql = "SELECT count(distinct E.firstName) FROM Student S";
Query query = session.createQuery(hql);
List results = query.list();
Pagination using Query
- Query setFirstResult(int startPosition) - This method takes an integer that represents the first row in your result set, starting with row 0.
- Query setMaxResults(int maxResult) - This method tells Hibernate to retrieve a fixed number maxResults of objects.
String hql = "FROM Student";
Query query = session.createQuery(hql);
query.setFirstResult(1);
query.setMaxResults(10);
List results = query.list();
Build a Hibernate Application with HQL CRUD Example
Technologies and tools used
- Hibernate 6.1.7.Final
- IDE - Eclipse
- Maven 3.5.3
- JavaSE 17
- MySQL - 8.0.32
Development Steps
- Create a Simple Maven Project
- Project Directory Structure
- Add jar Dependencies to pom.xml
- Creating the JPA Entity Class(Persistent class)
- Create a Hibernate configuration file - Java Configuration
- Create StudentDao Class - INSERT, UPDATE, SELECT, and DELETE HQL operations
- Create the Main class and Run an Application
1. Create a Simple Maven Project
Use the How to Create a Simple Maven Project in Eclipse article to create a simple Maven project in Eclipse IDE.2. Project Directory Structure
3. Add jar Dependencies to pom.xml
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>net.javaguides.hibernate</groupId>
<artifactId>hibernate-tutorial</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>hibernate-hql-crud-example</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.1.7.Final</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src/main/java</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
4. Creating the JPA Entity Class(Persistent class)
package net.javaguides.hibernate.entity;
import jakarta.persistence.*;
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
public Student() {
}
public Student(String firstName, String lastName, String email) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Student [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", email=" + email + "]";
}
}
5. Create a Hibernate configuration file - Java Configuration
package net.javaguides.hibernate.util;
import java.util.Properties;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.service.ServiceRegistry;
import net.javaguides.hibernate.entity.Student;
public class HibernateUtil {
private static SessionFactory sessionFactory;
public static SessionFactory getSessionFactory() {
if (sessionFactory == null) {
try {
Configuration configuration = new Configuration();
// Hibernate settings equivalent to hibernate.cfg.xml's properties
Properties settings = new Properties();
settings.put(Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
settings.put(Environment.URL, "jdbc:mysql://localhost:3306/hibernate_db?useSSL=false");
settings.put(Environment.USER, "root");
settings.put(Environment.PASS, "root");
settings.put(Environment.SHOW_SQL, "true");
settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
settings.put(Environment.HBM2DDL_AUTO, "create-drop");
configuration.setProperties(settings);
configuration.addAnnotatedClass(Student.class);
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Exception e) {
e.printStackTrace();
}
}
return sessionFactory;
}
}
Create StudentDao Class - INSERT, UPDATE, SELECT, and DELETE HQL operations
package net.javaguides.hibernate.dao;
import java.util.List;
import jakarta.persistence.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import net.javaguides.hibernate.entity.Student;
import net.javaguides.hibernate.util.HibernateUtil;
public class StudentDao {
public void insertStudent() {
Transaction transaction = null;
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
// start a transaction
transaction = session.beginTransaction();
String hql = "INSERT INTO Student (firstName, lastName, email) " +
"SELECT firstName, lastName, email FROM Student";
Query query = session.createQuery(hql);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
// commit transaction
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
public void updateStudent(Student student) {
Transaction transaction = null;
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
// start a transaction
transaction = session.beginTransaction();
// save the student object
String hql = "UPDATE Student set firstName = :firstName " + "WHERE id = :studentId";
Query query = session.createQuery(hql);
query.setParameter("firstName", student.getFirstName());
query.setParameter("studentId", 1);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
// commit transaction
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
public void deleteStudent(int id) {
Transaction transaction = null;
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
// start a transaction
transaction = session.beginTransaction();
// Delete a student object
Student student = session.get(Student.class, id);
if (student != null) {
String hql = "DELETE FROM Student " + "WHERE id = :studentId";
Query query = session.createQuery(hql);
query.setParameter("studentId", id);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
}
// commit transaction
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
}
public Student getStudent(int id) {
Transaction transaction = null;
Student student = null;
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
// start a transaction
transaction = session.beginTransaction();
// get an student object
String hql = " FROM Student S WHERE S.id = :studentId";
Query query = session.createQuery(hql);
query.setParameter("studentId", id);
List results = query.getResultList();
if (results != null && !results.isEmpty()) {
student = (Student) results.get(0);
}
// commit transaction
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
}
return student;
}
public List < Student > getStudents() {
try (Session session = HibernateUtil.getSessionFactory().openSession()) {
return session.createQuery("from Student", Student.class).list();
}
}
}
7. Create the main App class and Run an Application
package net.javaguides.hibernate;
import java.util.List;
import net.javaguides.hibernate.dao.StudentDao;
import net.javaguides.hibernate.entity.Student;
public class App {
public static void main(String[] args) {
StudentDao studentDao = new StudentDao();
Student student = new Student("Ramesh", "Fadatare", "rameshfadatare@javaguides.com");
studentDao.saveStudent(student);
studentDao.insertStudent();
// update student
Student student1 = new Student("Ram", "Fadatare", "rameshfadatare@javaguides.com");
studentDao.updateStudent(student1);
// get students
List < Student > students = studentDao.getStudents();
students.forEach(s - > System.out.println(s.getFirstName()));
// get single student
Student student2 = studentDao.getStudent(1);
System.out.println(student2.getFirstName());
// delete student
studentDao.deleteStudent(1);
}
}
Comments
Post a Comment
Leave Comment