12.2.13. ネストされたトランザクションについて
ネストされたトランザクションは、一部の参加者がトランザクションでもあるトランザクションです。
ネストされたトランザクションの利点
- 誤った隔離
- サブトランザクションがロールバックする場合、おそらくそれが使用しているオブジェクトが失敗したために、囲んでいるトランザクションはロールバックする必要はありません。
- モジュール性
- 新しいトランザクションの開始時にトランザクションがすでに呼び出しに関連付けられている場合、新しいトランザクションはその中にネストされます。したがって、オブジェクトにトランザクションが必要であることがわかっている場合は、オブジェクト内にトランザクションを作成できます。オブジェクトのメソッドがクライアントトランザクションなしで呼び出された場合、オブジェクトのトランザクションは最上位になります。それ以外の場合は、クライアントのトランザクションのスコープ内にネストされます。同様に、クライアントはオブジェクトがトランザクションであるかどうかを知る必要はありません。独自のトランザクションを開始できます。
ネストされたトランザクションは、Java Transaction Service (JTS)API の一部としてのみサポートされ、Java Transaction API(JTA) の一部としてはサポートされません。(非分散)JTA トランザクションをネストしようとすると、例外が発生します。
トランザクションサブシステムの JBoss EAP 6 設定を JTS を使用するように変更しても、ネストされたトランザクションが使用またはアクティブ化されることを示すものではありません。それらを使用する必要がある場合は、ORB API を直接使用する必要があります。これは、JTAAPI がネストされたトランザクションを開始するためのメソッドを提供しないためです。