Весенний спящий шаблон класса - PullRequest
1 голос
/ 11 января 2012

Я читаю о классе HibernateTemplate в Spring3.

Здесь я увидел два метода update и saveOrUpdate, я прочитал его из документации, такой как

  • обновление

Обновите данный постоянный экземпляр, связав его с текущим сеансом Hibernate.

Вот что означает «связать его с текущей сессией Hibernate»?

  • saveOrUpdate

Сохранить или обновить данный постоянный экземпляр в соответствии с его идентификатором (соответствует настроенному «несохраненному значению»?). Связывает экземпляр с текущим сеансом Hibernate.

Вот что означает «в соответствии с его идентификатором (соответствует настроенному« несохраненному значению »?). Связывает экземпляр с текущим сеансом Hibernate»?

Пожалуйста, помогите мне

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 11 января 2012

Вот что означает «связать его с текущим сеансом Hibernate»?

После поиска этой сущности через эту Session вы получите обновленную сущность.Другие Session s не увидят обновления до тех пор, пока не будет сброшено Session.

Вот что означает «в соответствии с его идентификатором (соответствует настроенному« несохраненному значению »?).

Если у сущности есть идентификатор, он saveOrUpdate обрабатывает ее как существующую (в БД). В противном случае это новая. "Unsaved-value" - это значение, которое Hibernate поместитв идентификаторе saveOrUpdate нового объекта. Вы можете настроить его, например, на отрицательное значение. Таким образом, вы также можете определить, при следующих извлечениях этого объекта из Session, является ли он новым объектомеще не сохранен в БД или в существующем.

1 голос
/ 11 января 2012

Вот что означает «связать его с текущим Hibernate». Сессия "?

Означает, что ваша сущность (временная или отсоединенная) будет сохранена и связана с сеансом (присоединена / сохранена), поэтому с этого момента сессия будет отслеживать любые изменения, сделанные для этой сущности, и уменьшать количество операторов DML, которые необходимо выполнить. в конце.

Вот что означает "в соответствии с его идентификатором (соответствует настроенному «Неспасенное значение»?). Связывает экземпляр с текущим Hibernate Сессия "?

Если атрибут идентификатора объекта имеет значение, то он обновляется и присоединяется к сеансу для дальнейшего отслеживания изменений по сеансу, в противном случае этот объект будет вставлен в БД в качестве новой записи и будет связан с сеансом.

Пожалуйста, пройдите через сущность состояния экземпляра спящих сущностей

1 голос
/ 11 января 2012

Простой - если объект с таким же идентификатором существует в БД, он обновляет его, если идентификатор (первичный ключ) равен нулю, то сохраняет его как новое значение - следовательно, saveOrUpdate - в зависимости от того, существует ли это значение вDB или новое значение.

Сопоставление идентификатора происходит путем сопоставления вашего идентификатора pojo в hbm под тегом с указанным столбцом.

saveOrUpdate () выполняет следующие действия:

if the object is already persistent in this session, do nothing

if another object associated with the session has the same identifier, throw an exception

if the object has no identifier property, save() it

if the object's identifier has the value assigned to a newly instantiated object, save() it

if the object is versioned by a <version> or <timestamp>, and the version property value is the same value assigned to a newly instantiated object, save() it

otherwise update() the object 

С здесь

Надеюсь, это поможет.

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