Цикл for говорит об ошибке синтаксиса выражения при инициализации целого числа в цикле

Во время программирования я натолкнулся на необычную ошибку. Когда я инициализирую целое число в цикле, иногда он говорит, что выражение недопустимо, но иногда оно принимает его. что произойдет, если код в блоке try выдаст что-то отличное от RuntimeException ? Похоже, что Hibernate должен быть в состоянии изящно закрыть сеанс с открытой транзакцией в этом случае, предположительно, откатив его назад, но если это правда, зачем вообще вызывать откат ?

7
задан Pascal Thivent 28 August 2010 в 00:58
поделиться

1 ответ

Hibernate может многое упростить, но управление транзакциями не очень простое, поэтому для каждой транзакции вы должны очень тщательно продумывать, что вы хотите. Hibernate не может помочь вам с этим.

Если код в блоке try выдает что-либо, кроме RuntimeException, ваша транзакция явно не фиксируется. Но и явно не откатываете. Вызов sess.Close в вашем finally блоке также не откатывает транзакцию. Что происходит, зависит от того, является ли это вложенной транзакцией:

  • Если это не так, то в конечном итоге транзакция истечет и откатится.
  • Если это так, родительская транзакция увидит, что дочерняя транзакция не зафиксирована, когда она фиксирует себя. Это приведет к откату всей транзакции.
4
ответ дан 7 December 2019 в 14:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: