Red Hat Training

A Red Hat training course is available for Red Hat JBoss Web Server

2.2.4. 永続コンテキスト伝播

永続コンテキスト伝播は、コンテナにより管理されたエンティティマネージャに対して行われます。
トランザクションスコープコンテナにより管理されたエンティティマネージャ (Java EE 環境の一般的なケース) で、JTA トランザクション伝播が永続コンテキストリソース伝播と同じです。つまり、該当する JTA トランザクション内で取得された、コンテナにより管理されたトランザクションスコープエンティティマネージャはすべて同じ永続コンテキストを共有します。Hibernate の用語では、これはすべてのマネージャが同じセッションを共有することを意味します。
重要: 永続コンテキストは異なる JTA トランザクション間または同じエンティティマネージャファクトリ経由のエンティティマネージャ間で共有されません。拡張された永続コンテキストを使用する場合は、コンテキスト伝播に対していくつかの重要な例外があります。
  • ステートレスセッション Bean、メッセージ駆動 Bean、またはトランザクションスコープ永続コンテキストを持つステートフルセッション Bean が、同じ JTA トランザクションの拡張永続コンテキストを持つステートフルセッション Bean を呼び出す場合は、IllegalStateException がスローされます。
  • 拡張された永続コンテキストを持つステートフルセッション Bean がステートレスセッション Bean または同じ JTA トランザクションのトランザクションスコープ永続コンテキストを持つステートフルセッション Bean を呼び出す場合は、永続コンテキストが伝播されます。
  • 拡張された永続コンテキストを持つステートフルセッション Bean が異なる JTA トランザクションコンテキストのステートレスまたはステートフルセッション Bean を呼び出す場合、永続コンテキストは伝播されません。
  • 拡張された永続コンテキストを持つステートフルセッション Bean が拡張された永続コンテキストを持つ別のステートフルセッション Bean をインスタンス化する場合、拡張された永続コンテキストは 2 つ目のステートフルセッション Bean により継承されます。2 つ目のステートフルセッション Bean が最初のものとは異なるトランザクションコンテキストで呼び出された場合は、IllegalStateException がスローされます。
  • 拡張された永続コンテキストを持つステートフルセッション Bean が、同じトランザクションの異なる拡張永続コンテキストを持つステートフルセッション Bean を呼び出す場合は、IllegalStateException がスローされます。