2017-01-20 14 views
-2
  1. 私はまた、テーブルBに挿入しながら、何かがうまくいかない場合は、テーブルB.
  2. で、その後、テーブルAの行を挿入したい、我々は2つのテーブル、テーブルAとテーブルB
  3. を持っていると仮定することができますテーブルの行の挿入をロールバックしたい、私は図の下で説明されてやっていること

enter image description here休止状態で複数のトランザクションを実行する方法は?

+0

画像はokですrは図を示す。しかし、あなたのコメントと質問は、絵ではなくテキストとして記入してください。それはほとんど読めるし、明らかにサイトで検索することで見つけることができません。 – Seki

答えて

0

あなたが最良のものではありません、このアーキテクチャに固執する必要がある場合は、希望スタンドにする必要があるあなたがB DAOを使用しているときは、新しい取引をしてください。

マークで挿入を行っている方法:DAOで今

@Transactional(propagation = Propagation.REQUIRES_NEW) 
public void insertB(B b) { 
    // insert B 
} 

を挿入する方法にこれを追加します。例外はBのDAOで発生したときに今

@Transactional(rollbackFor=Exception.class) 
public void insertA(A a) { 
    // insert A 
} 

、そのトランザクションはロールバックされ、例外がA DAOに伝播され、そのトランザクションのロールバックも行われます(例外をキャッチしない場合、ロールバックは行われません)