Difference between Hibernate Session get() and load() method
- get() loads the data as soon as it’s called whereas load() returns a proxy object and loads data only when it’s actually required, so load() is better because it supports lazy loading.
- Since load() throws an exception when data is not found, we should use it only when we know data exists.
- We should use get() when we want to make sure data exists in the database.
From JavaDoc:
Session.get() → This method returns a persistence object of the given class with the given identifier. It will return null if there is no persistence object.
Session.load() → This method returns a persistence object of the given class with the given identifier. It will throw an exception ObjectNotFoundException if an entity does not exist in the database. The load() method may return a proxy object instead of a real persistence object.
Session.load() → This method returns a persistence object of the given class with the given identifier. It will throw an exception ObjectNotFoundException if an entity does not exist in the database. The load() method may return a proxy object instead of a real persistence object.
import org.hibernate.Session; import net.javaguides.hibernate.entity.Student; import net.javaguides.hibernate.util.HibernateUtil; public class App { public static void main(String[] args) { Integer studentId = 1; /************************** Save Entity ***************************/ Session sessionOne = HibernateUtil.getSessionFactory().openSession(); sessionOne.beginTransaction(); // create new student object Student student = new Student("Ramesh", "Fadatare", "rameshfadatare@javaguides.com"); // save student object to database sessionOne.save(student); sessionOne.getTransaction().commit(); /*******************************************************************/ //Let's open a new session to test load() methods Session sessionTwo = HibernateUtil.getSessionFactory().openSession(); sessionTwo.beginTransaction(); //first load() method example Student student1 = (Student) sessionTwo.load(Student.class, studentId); System.out.println(student1.getFirstName() + " - " + student1.getLastName()); //Let's verify the entity name System.out.println(sessionTwo.getEntityName(student1)); sessionTwo.getTransaction().commit(); } }
Check out a complete example at https://www.javaguides.net/2018/11/hibernate-5-load-method-example.html.
Usage of the Hibernate Session get() method
public void getStudent(int id) { Transaction transaction = null; try (Session session = HibernateUtil.getSessionFactory().openSession()) { // start a transaction transaction = session.beginTransaction(); // get Student entity using get() method Student student = session.get(Student.class, id); System.out.println(student.getFirstName()); System.out.println(student.getEmail()); // commit transaction transaction.commit(); } catch (Exception e) { if (transaction != null) { transaction.rollback(); } e.printStackTrace(); } }
Checkout the complete example at https://www.javaguides.net/2018/11/hibernate-get-load-and-byid-method-examples.html.
Comments
Post a Comment