のは、考えてみましょう:春のトランザクションアノテーション - どのように機能しますか?
delete()
update()
insert()
@Transactional
void doDBstuff(){
delete()
update()
insert
}
をあなただけdoDBstuff
を見ることができるように。他のメソッド(delete, update, insert
)を呼び出します。それらのすべてはmybatis
を使用してデータベースを処理します。
@Transactional
注釈が有効である必要がある場合は教えてください。私はそれを手動でテストしましたが、それはうまくいくと思われますが、私はそれがどのように機能するかを確実に理解したいと思っています。
私は答えを求めます:
1.トランザクションセーフですか?
2.アンダーフッドはどのように機能しますか?私はそれが複雑であることを知っています。私は、いくつかの幻想だけを、題材についてはぼんやりと見ることを意味する。
あなたのフレームワーク(おそらくSpring)は '@ Transactional'でアノテーションされたメソッドを持つすべてのBeanを探します(おそらく' 'またはそれを使用してSpringの設定で、 。ボイラープレートコードをこれらのメソッド(AOPを使用)に貼り付けると、トランザクションが開始され、トランザクションが完了するとコミットされます。メソッドが例外をスローすると、ロールバックが実行されることがあります。 –
BretC
ロールバックが行われる可能性がありますか?私はロールバックをしなければならないと思った。それで、それはトランザクションになると大丈夫ですか?呼び出されたメソッドに注釈が付きませんか?私はそれを設定しません。私は春の靴を持っています。 –
私はあなたが 'rollbackFor'アノテーション値として入れたものに依存すると思っていましたが、私は間違っているかもしれません... – BretC