In this short article, we will learn how to remove cache objects from the first-level cache using the 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.
Session.clear() Method
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.
Also, check out the Hibernate Session.evict() Method Example.
Comments
Post a Comment
Leave Comment