@Stateful EJB は、同じ EntityManager を複数のトランザクションで再利用するために PersistenceContextType.EXTENDED を使用できます。これは、会話型スコープの実装に役立ちます。Spring はこれをサポートしていますか?
3 に答える
これについては、プレーンな JPA に基づく DAOの実装 に短い説明があります。
@PersistenceContextアノテーションにはオプションの属性タイプがあり、デフォルトは ですPersistenceContextType.TRANSACTION。EntityManagerこのデフォルトは、共有プロキシを受け取るために必要なものです。代替手段PersistenceContextType.EXTENDEDはまったく別の問題です。これにより、いわゆる extended が生成されEntityManagerます。これはスレッドセーフではないため、Spring 管理のシングルトン Bean などの同時アクセス コンポーネントで使用してはなりません。ExtendedEntityManagersは、たとえばセッションに常駐するステートフル コンポーネントでのみ使用することを想定しており、そのライフサイクルはEntityManager現在のトランザクションに関連付けられているのではなく、完全にアプリケーション次第です。
いいえ、Spring がそれらをサポートしているようには思えません。
はい、Spring はそれをサポートしています。たとえば、PersistenceContextType EXTENDED を使用した PersistenceContext の注入を参照してください。