MySQLのデータの失われた犯人のSpringBoot - トランザクション(転送)

 

それはこのような何か、データを挿入するタイミングタスクを実行していたので

//シンプルなタイミングタスク、30分実行する
@Scheduled(クーロン=「0 0/30 * * *の?」)
公共無効dealInsertUserInfo(){
userService.dealInsertUserInfo();
}
その後、それがデータを適切に挿入されているかどうかに多くの注意を払っていませんでした次の日まで、ディスカバリ・テーブルIDの前に質問をする同僚は、2,000人以上に増加し、そしてデータを当惑されていないので!実際には、SpringBootの一般的な使用は、我々は注釈を使用することを好むことをすべて知っているを開発し、一般的取引のサービス層にコメントを追加します:@Transactionalは、すべての後に、例えば、異なるトランザクション分離レベルに応じて異なる機能を実行することができ、防止のダーティ・リード、反復不能読み取りおよびファントムをお読みください。しかし、それはロールバック()メソッドを呼び出してトランザクションをロールバックに失敗し、私はデータの操作を行い、それが飲み込ま冷酷だった、そして私shanlita

トランザクションのロールバックの要件

1.メソッドのインターセプト-クラスは@Transactional注釈されている方法または方法
2は、
方法の異常な実行は、トランザクション・マネージャが起動され発生し、このプロセスにするために-異常
3.
指定された例外-デフォルト設定を、サービスのみエラーになるとのRuntimeException及びそのサブクラスは、これらの異常をチェックを外し、ロールバックを行います。一般的な例外は、(コンフィギュレーションを行うためにロールバックに、一般的な例外たい場合は)これらの異常なロールバックが発生していないチェック 

一般的な異常なロールバックを実現:栗のために 
注釈型:@Transactional(rollbackFor = Exception.class)

4.スロー例外-指定されたメソッドの異常は、トランザクションマネージャにキャプチャされた後、トランザクションは、例えば、それに応じてトランザクションをロールバックされます発生しました:
   捕捉異常を、ロールバック。 
   B例外が試み{}である場合。キャプチャ、トランザクションマネージャができなくなったキャッチ例外、私は対応できませんので、トランザクションがロールバックされていません。(両方キャッチ(のRuntimeException)) 
   C例外が試し{}追いつくがある場合は、私たちができるキャッチに()。 )(新規のRuntimeExceptionをスロー{に}、実行時例外が手動捕捉トランザクションマネージャのためにスローされる;(キャッチ(){のRuntimeExceptionスロー新しい新しい();}両方)
   .. Dを手動でトランザクションをロールバックTransactionAspectSupport.currentTransactionStatus()setRollbackOnlyメソッド() ;

物事の自動ロールバック、@Rollback(false)を閉じ、ロールバックの使用をオフにします。
 
----------------
免責事項:この記事はCSDNブロガー元の記事「ZBYTSL」で、CC 4.0 BY-SAの著作権契約書に従って、再現し、元のソースのリンクと、この文を添付してください。
オリジナルリンクします。https://blog.csdn.net/ZBYTSL/article/details/102833922

おすすめ

転載: www.cnblogs.com/xiaohanlin/p/12195488.html