Hibernate Save () - «Метод сохранения», что означает работа save () вне транзакции? - PullRequest
0 голосов
/ 30 мая 2018

Хорошо, когда я читал о различиях между спящим режимом «Persist» и «Save», во многих статьях особо подчеркивалось, что «Метод Save может выполняться вне границы транзакции»
Это утверждение очень смутило меня, и я прочитал достаточно честные статьи, чтобы понять истинный смысл этого, но не повезло !!!Теперь у меня есть следующие пункты, чтобы уточнить.

Вопрос 1

это правда ??Если это правда, то

Вопрос 2

[при условии, что транзакция означает физическую транзакцию БД]

Насколько мне известно, базы данных нетвыполнение может произойти с нашей транзакцией, тогда что это означает за пределами границы транзакции?

Вопрос 3

[если транзакция означает логическую транзакцию]

Согласно материалам, на которые я ссылался, «сессия» выложила логическую транзакцию.поэтому, даже если он использует persist () или save () для сохранения данных, он будет сбрасываться и фиксироваться только после явной фиксации или session.flush или закрытия сессии.

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

Если кто-то может дать мне четкий подробный ответ, это было бы очень полезно. Большое спасибо !!!

1 Ответ

0 голосов
/ 30 мая 2018

Это хорошая статья, которую слишком долго копировать: https://www.journaldev.com/3481/hibernate-session-merge-vs-update-save-saveorupdate-persist-example. По сути:

Q1: Да, это правда.Это означает, что вы можете позвонить session.save(object) без предварительного набора session.beginTransaction().У вас по-прежнему должен быть открытый сеанс.

Q2: Транзакция означает транзакцию Hibernate, предположительно, сеанс будет по-прежнему использовать транзакцию в отношении базы данных, но очень короткую и, возможно, неявную (автоматическую фиксацию).

Q3: Это означает, что за пределами транзакции Hibernate, запущенной beginTransaction.

...