Hibernate Session.clear() Method Example

In this short article, we will learn how to remove cache objects from the first level cache using Session.clear() method with an example.
Learn complete Hibernate framework at https://www.javaguides.net/p/hibernate-tutorial.html.
The Session.clear() method is used to remove all cached objects associated with the session.

void org.hibernate.Session.clear()

This method is used to completely clear the session. Evict all loaded instances and cancel all pending saves, updates, and deletions. Do not close open iterators or instances of ScrollableResults.

Hibernate Session.clear() Method Example

The Session.clear() method is used to remove all cached objects associated with the session.
package net.javaguides.hibernate.tutorial;

import org.hibernate.Session;
import org.hibernate.Transaction;

import net.javaguides.hibernate.tutorial.config.HibernateJavaConfig;
import net.javaguides.hibernate.tutorial.entity.Student;

public class RemoveFirstCacheDemo {

    public static void main(String[] args) {

        Transaction transaction = null;
        try (Session session = HibernateJavaConfig.getSessionfactory().openSession()) {

            // start the transaction
            transaction = session.beginTransaction();

            // get the student entity using id
            Student student1 = session.load(Student.class, new Long(1));

            System.out.println(student1.getFirstName());
            System.out.println(student1.getLastName());
            System.out.println(student1.getEmail());

            // load student entity by id
            Student student2 = session.load(Student.class, new Long(1));
            System.out.println(student2.getFirstName());
            System.out.println(student2.getLastName());
            System.out.println(student2.getEmail());

            session.clear();
            // load student entity by id
            Student student3 = session.load(Student.class, new Long(1));
            System.out.println(student3.getFirstName());
            System.out.println(student3.getLastName());
            System.out.println(student3.getEmail());

            // commit transaction
            transaction.commit();

        } catch (Exception e) {
            if (transaction != null) {
                transaction.rollback();
            }
        }
    }
}
Output:
Hibernate: select student0_.id as id1_0_0_, student0_.email as email2_0_0_, student0_.first_name as first_na3_0_0_, student0_.last_name as last_nam4_0_0_ from student student0_ where student0_.id=?
Prabhas
Fadatare
prabhas@gmail.com
Prabhas
Fadatare
prabhas@gmail.com
Hibernate: select student0_.id as id1_0_0_, student0_.email as email2_0_0_, student0_.first_name as first_na3_0_0_, student0_.last_name as last_nam4_0_0_ from student student0_ where student0_.id=?
Prabhas
Fadatare
prabhas@gmail.com
Clearly, a clear() method removed all the student objects from the first level cache so that it was fetched again from the database.

Comments