2013-05-24 3 views
2

Я знаком с Hibernate.I есть вопрос.Обновление объекта с использованием saveOrUpdate в Hibernate

Скажем, я session.saveOrUpdate(object). Если объект содержит некоторый 'id' (идентификатор объекта), то это означает, что запрос обновления будет запущен, если объект изменен.

Я хочу знать, как Hibernate делает это, т. Е. Может быть «n» количество полей в объекте. Hibernate проверяет каждое поле, чтобы узнать, было ли изменено какое-либо поле (в этом случае запрос об обновлении)?

+0

+1 полезный вопрос – PSR

ответ

2

При использовании использования .saveOrUpdate() он проверяет, не имеет ли объект свойство идентификатора, и, если он сделает его постоянным, генерируя его идентификатор и назначая его сеансу.

если объект уже настойчивы в этой сессии, ничего не делать, если другой объект, связанный с сеансом имеет тот же идентификатор, бросить исключение, если объект не имеет свойства идентификатора, за исключением() это если Идентификатор объекта имеет значение, назначенное для вновь созданного объекта , save(), если объект имеет версию с помощью или, а значение свойства версии - то же самое значение , присвоенное вновь созданному объекту, save() иначе обновить() объект

From Hibernate Docs

+0

так что даже если ни одно поле не будет изменено, запрос на обновление будет уволен? – Anand

+0

да он будет срабатывать. Поскольку он будет проверять только поле идентификатора – PSR

+0

ok..i думал, что если ни одно поле не будет изменено, обновление не будет запущено. Разве это не проблема производительности? я имею в виду, если в поле не было никаких изменений, то зачем запускать запрос на обновление .. – Anand

0

Он проверяет поле (ы) отображается в качестве идентификатора для данного объекта, если объект не имеет идентификатора, она вызывает Save(), который INSERTS объект, если он делает это вызывает Update() который UPDATES это

0

в основном в спящий режим, если вы установите объект с уникальным идентификатором любой, как она собирается обновить весь ряд по телефону session.saveOrUpdate();

или уникальный идентификатор не нашел, что это вставить данные.

Смежные вопросы