Подтвердить что ты не робот

Что именно делает org.hibernate.Session.save()?

Я знаю, что Session.save() сохраняется переходный объект. И я вижу, что он также имеет saveOrUpdate(), а также persist().

Предположим, что save() эквивалентно SQL INCLUDE, это?

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

4b9b3361

Ответ 1

Разница между save и saveOrUpdate

Основное различие между save и saveOrUpdate заключается в том, что save генерирует новый идентификатор и INSERT запись в базу данных, а saveOrUpdate может либо INSERT, либо UPDATE на основании существования записи. Таким образом, save будет действовать без проверки существования, с другой стороны saveOrUpdate будет проверять наличие, если запись существует, будет обновлена ​​иначе будет добавлена ​​новая запись.

Основные различия между persist и save

1) Первое различие между save и persist - это их тип return. Подобно методу save, persist также INSERT записывает в базу данных, но тип возврата persist равен void, а тип возврата save - Serializable object.

2) Еще одно отличие между persist и save заключается в том, что оба метода делают переходный экземпляр постоянным. Тем не менее, метод persist не гарантирует, что значение идентификатора будет присвоено постоянному экземпляру немедленно, назначение может произойти во время очистки.

Ответ 2

     save Persists an entity. Will assign an identifier if one doesn't exist.
     If one does, it essentially doing an update. 
     Returns the generated ID of the entity.

Я предлагаю, вам действительно нужно читать для дальнейшего продвижения.

Ответ 3

Насколько я знаю, это происходит следующим образом:

  • save() просто сохраняет вашу сущность
  • persist() изменяет ваш экземпляр как управляемый объект. это означает, что если вы выполняете операцию над ней и ваша транзакция все еще открыта, она автоматически сохраняется при вызове flush() (если я не ошибаюсь)
  • merge() есть и тот, который похож на persist(), но возвращает новый экземпляр и не модифицирует ваш старый экземпляр....
  • saveOrUpdate() вы можете посмотреть здесь

Ответ 4

save() метод вставляет запись в базу данных. но метод saveorupdate() проверяет pk, если pk найден, тогда он обновляет данные, а затем вставляет данные в базу данных.