Hibernate: разница между обновлением и методом слияния - PullRequest
0 голосов
/ 30 декабря 2018

Ниже приведен фрагмент кода, который показывает разницу между обновлением и методом слияния hibernate.Но все же я не понимаю, зачем нам нужна строка № 13 здесь.Если мы не напишем строку № 13, можно ли вызвать session2.update (s1) вместо строки № 17

SessionFactory factory = cfg.buildSessionFactory();  //line no#1
Session session1 = factory.openSession();            //line no#2
                                                     //line no#3
Student s1 = null;                                   //line no#4
Object o = session1.get(Student.class, new Integer(101)); //line no#5
s1 = (Student)o;                                     //line no#6
session1.close();                                   //line no#7
                                                    //line no#8
s1.setMarks(97);                                    //line no#9
                                                    //line no#10
Session session2 = factory.openSession();           //line no#11
Student s2 = null;                                  //line no#12
Object o1 = session2.get(Student.class, new Integer(101)); //line no#13
s2 = (Student)o1;                                   //line no#14
Transaction tx=session2.beginTransaction();         //line no#15
                                                    //line no#16
session2.merge(s1);                                 //line no#17

1 Ответ

0 голосов
/ 30 декабря 2018

Чтобы понять разницу, вам сначала нужно понять постоянные объекты в спящем режиме, что объясняется в следующем ответе - Что означает постоянный объект в архитектуре спящего режима?

Проще говоря, Persistent objects являются экземплярами создаваемых вами классов POJO, которые представляют строки в таблице в базе данных.Теперь вернемся к методам merge и update -

update Обновляет постоянный экземпляр с идентификатором данного отдельного экземпляра.Если существует постоянный экземпляр с тем же идентификатором, генерируется исключение.

, в то время как метод merge Копирует состояние данного объекта в постоянный объект с тем же идентификатором.Если в данный момент нет постоянного экземпляра, связанного с сеансом, он будет загружен.Вернуть постоянный экземпляр.Если данный экземпляр не сохранен, сохраните копию и верните ее как новый постоянный экземпляр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...