Как Hibernate решает порядок обновления / вставки / удаления

Давайте сначала забудем о Hibernate. Предположим, что у меня есть две таблицы A & amp; B. Две транзакции обновляют одни и те же записи в этих двух таблицах, но txn 1 обновляет B и затем A, а txn 2 обновляет A и B. Это типичный пример взаимоблокировки. Наиболее распространенным способом избежать этого является предварительное определение порядка получения ресурсов. Например, мы должны обновить таблицу A, а затем B.

Вернитесь в спящий режим. Когда мы обновляем много сущностей в одном сеансе, когда я очищаю сеанс, изменения разных сущностей будут генерировать соответствующие операторы вставки / обновления / удаления в БД. Есть ли в Hibernate какой-то алгоритм для определения порядка обновления между сущностями? Если нет, то каким образом Hibernate используется для предотвращения тупиковой ситуации, описанной в первом абзаце?

Если Hibernate поддерживает заказ, как я могу узнать или контролировать заказ? Я не хочу, чтобы мое явное обновление в БД конфликтовало с Hibernate и вызывало взаимоблокировку.

Ответы на вопрос(2)

Ваш ответ на вопрос