- update() and merge() methods in hibernate are used to convert the object which is in detached state into persistence state.[  But there are different situation where we should be used update() and where should be used merge() method in hibernate  ]
 
-  Example:
 
Employee emp1 = new Employee();
emp1.setEmpId(100);
emp1.setEmpName("Dinesh");
//create session
Session session1 = createNewHibernateSession();
session1.saveOrUpdate(emp1);
session1.close();
//emp1 object in detached state now
emp1.setEmpName("Dinesh Rajput");//Updated Name
//Create session again
Session session2 = createNewHibernateSession();
Employee emp2 =(Employee)session2.get(Employee.class, 100);
//emp2 object in persistent state with id 100
//below we try to make on detached object with id 100 to persistent state by 
using update method of hibernate
session2.update(emp1);//It occurs the exception NonUniqueObjectException 
because emp2 object is having employee with same empid as 100. In order 
//to avoid this exception we are using merge like given below instead of
 session.update(emp1);
session2.merge(emp1); //it merge the object state with emp2
session2.update(emp1); //Now it will work with exception
  
 
No comments:
Post a Comment