質問: ejbでのcmtトランザクションとcdi beanでの@transactional 今日、javaee jsf webアプリケーションを設計しているとします。一方で、cdi beanのメソッドを@transactionalにするか、または(セッションステートレス、またはシングルトン)ejbをcdi beanに注入するかを選択でき、ejbのメソッドはcmtトランザクションの下で実行されます。 。あなたは何を好みますか?どうして?それは単に好みの問題ですか?
回答: cdiはデフォルトのプログラミングモデルである必要があり、その下にejbをスタックするのはコストがかかるため、必要な場合にのみ行う必要があります。したがって、ルールは次のとおりです。cdiにない機能を提供しない場合は、ejbを使用しないでください。新しいアプリケーションを設計する場合は、最初に@transactionalでcdi管理bean(pojo)を使用し、特定のejb機能(コンポーネントプール、非同期操作、リモート呼び出し)が必要な場合にのみejbにします。@transactionalはjta仕様でインターセプターバインディングとして定義されており、jta実装はこのインターセプターを通じてejbのcmtと同じサービスを提供します。