Что именно делает org.hibernate.Session.save()?
Я знаю, что Session.save()
сохраняется переходный объект. И я вижу, что он также имеет saveOrUpdate()
, а также persist()
.
Предположим, что save()
эквивалентно SQL INCLUDE
, это?
Если у меня есть объект, который уже существует в БД, а я save()
он, будет включена другая строка, будут ли обновляться поля, или это просто будет проигнорировано и ничего не произойдет?
Ответы
Ответ 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 найден, тогда он обновляет данные, а затем вставляет данные в базу данных.