質問

EntityManagerを使用している場合、それはPersistenceContextで1つのインスタンスを取得し、私のプログラムでそれを周りに渡すために優れている、または私はそれ以上?

何度も依存性注入を使用する必要があります

私のアプリケーションでは、各クライアントは、ステートフルセッションBeanと通信し、各Beanは、いくつかの点で使用EntityManagerする必要があります。 私は、Beanのメソッドを同時にinvocatedている(しかし、私もよく分からない)ことを推測します。 どのように私は、スレッドセーフな方法でEntityManagerを使用することを保証していますか?取引では?各Beanに別々のインスタンスと

これが混乱している場合は、

申し訳ありませんが、私は、EJB / JPAに新たなんだと私は私の質問に対処する任意の材料を見つけることができませんでした。

役に立ちましたか?

解決

はい、あなたは(少なくともではない別のクライアントから同時に呼び出されません)あなたのステートフルセッションBeanに(各スレッド/クライアント要求ごとに異なります)EntityManagerインスタンスを注入する必要があります。

が、DAOクラスを作成しても意味がありません。 JPAはすでに、あなたは別のJPA実装間の独立性と可搬性をRDBMS与え、高レベルの永続化APIです。だから、DAOをのみをコードベースに混乱を追加することになります。

取引について、あなたは本当に何もする必要はありません。彼らは常に、クライアント固有のトランザクション内で実行されますので、セッションBeanのビジネスメソッドは、デフォルトでは「必須」トランザクション属性を持っています。

他のヒント

を使用するには、あなたのDAOクラス(ES)でご@PersistenceContextを注入するEntityManager。これらは、データベース操作を処理するクラスです。次に、あなたのDAOクラス(ES)注入、他の全ての(サービス)のクラスインチあなたのDAOはステートレスBeanにする必要があります(リモートインタフェースの必要がなく、ローカルのみ)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top