Безопасно обрабатывать Hibernate SET TRANSACTION должен быть первым заявлением об ошибке транзакции

Я не уверен, что задаю правильный вопрос для начала, заранее извиняюсь.

Вопрос

Мне интересно, возможно ли иметь какой-то обработчик для отката ошибочной транзакции в Hibernate. У меня возникла проблема: всякий раз, когда возникает ошибка во время пакетного обновления из Hibernate, SET TRANSACTION должен быть первым оператором ошибки транзакции, и после этого я не смогу выполнить какой-либо другой запрос.

Спасибо :)


person Aion    schedule 25.10.2011    source источник
comment
Ваша проблема была решена? Я не вижу принятых ответов или комментариев..?   -  person ManuPK    schedule 30.10.2011


Ответы (1)


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

Если вы используете Spring, это может быть намного проще с управлением транзакциями Spring API

Например,

@Transactional
void updateFoo(Foo foo){
//do your stuff
}

В приведенном выше примере новая транзакция будет запущена в начале метода updateFoo(), зафиксированного в последней строке. Если между ними возникнут какие-либо проблемы, транзакция будет отменена.

person ManuPK    schedule 26.10.2011
comment
Извините за поздний ответ, есть ли другой способ, кроме использования аннотаций? - person Aion; 19.11.2011
comment
Вы можете прочитать его в документации по весне здесь. - person ManuPK; 22.11.2011