Hibernate : Refreshing Object

In this tutorial we will discuss about session.refresh() method.

Hibernate : Refreshing Object

Hibernate : Refreshing Object

In this tutorial we will discuss about session.refresh() method.

Hibernate Refresh() method :

refresh() method provide the way to re-read the state of the given instance. It is useful to run this method for the session of long term.
you can say for a single session you can update the database table data and fetch the updated data.
Some place where to use refresh() method -

  • where a database trigger alters the object state upon insert or update
  • after executing direct SQL (eg. a mass update) in the same session
  • after inserting a Blob or Clob

Syntax:-

void refresh(Object object) throws HibernateException
void refresh(Object object,LockMode lockMode) throws HibernateException
void refresh(Object object,LockOptions lockOptions) throws HibernateException

Example :

In this example we are refreshing record of student table by using session.refresh().

package net.roseindia.main;

import net.roseindia.table.Student;
import net.roseindia.util.HibernateUtil;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class HibernateSessionRefresh{
public static void main(String args[]) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
int roll = 5;
Student student = (Student) session.load(Student.class, roll);
try {
student.setName("Johny");
student.setCourse("Hibernate");
session.saveOrUpdate(student);
transaction.commit();
session.refresh(student);
System.out.println("Update Successfully");
session.close();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}

Output :

Hibernate: select student0_.roll_no as roll1_0_0_, student0_.course as course0_0_, student0_.name as name0_0_ from student student0_ where student0_.roll_no=?
Hibernate: select student0_.roll_no as roll1_0_0_, student0_.course as course0_0_, student0_.name as name0_0_ from student student0_ where student0_.roll_no=?
Update Successfully

Click here to download complete source code