@Naliba дал отличный ответ по методу Update ().
Жизненный цикл гибернации в следующем изображении помогает получить представление выше методов.
Пример: рассмотрим ситуацию merge()
метода.
SessionFactory factory = cfg.buildSessionFactory();
Session session1 = factory.openSession();
Student student1 = null;
Object object1 = session1.get(Student.class, new Integer(101));
student1 = (Student)object1;
session1.close();
student1.setMarks(97);// -->object will be in some RAM location, not in the session1 cache
Session session2 = factory.openSession();
Student student2 = null;
Object object2 = session2.get(Student.class, new Integer(101));
student2 = (Student)object2;
Transaction tx=session2.beginTransaction();
session2.merge(student1);
Выше student1
находится в отключенном состоянии, модифицировало этот отсоединенный объект student1
, теперь, если мы позвоним update()
, тогда hibernate выдает ошибку.
В этом session2
, мы вызвали session2.merge(s1);
теперь в student2
объект student1
изменения будут объединены и сохранены в базе данных.