Учтем:Транзакционная аннотация весной - как она работает?
delete()
update()
insert()
@Transactional
void doDBstuff(){
delete()
update()
insert
}
Как вы можете видеть только doDBstuff
. Он вызывает другой метод (delete, update, insert
). Все они используют mybatis
для работы с базой данных.
Сообщите мне, пожалуйста, если это @Transactional
аннотация должна работать. Я тестировал его вручную, и, похоже, все в порядке, однако я хочу быть уверенным и лучше понять, как это работает.
Так что я отвечаю на вопросы:
1. Безопасен ли он?
2. Как это работает? Я знаю, что это сложно. Я имею в виду только некоторую интуицию, грубый взгляд на тему.
Ваш фреймворк (возможно, Spring) будет искать все бобы, которые имеют методы, аннотированные с помощью '@ Transactional' (вероятно, потому, что вы сказали это в своей весенней конфигурации, используя' 'или что-то еще) , Затем он будет придерживаться кода котельной плиты вокруг этих методов (используя АОП), чтобы начать транзакцию и зафиксировать ее, когда она закончится. Он может выполнить откат, если метод генерирует исключение. –
BretC
Это может сделать откат? Я думал, что он должен сделать откат. Так что это нормально, когда дело доходит до транзакции? Не имеет значения, что называемые методы arent аннотированы? И я не настраиваю его. У меня весенняя обувь. –
Я думал, что это зависит от того, что вы ввели в качестве значения аннотации «rollbackFor», но я могу ошибаться ... – BretC