0

これらのメモを読んでください。EBeanサイトページ。以下を含む段落があります:

「EJB3コンテナでEntityManagerを管理する自然な方法は、ステートフルセッションBeanを使用することです。」

また、次のような公開された問題がありました

「「ユーザー思考時間」中にEntityManagerを管理する方法は?

したがって、質問:「user-think-time」に関する前述の問題を解決できるEJBステートレスBeanは何を実行/提供しますか?

ejbは「セッション管理」を提供していると思いますが、セッションをThredLocal変数に格納し、オンデマンドでユーザーに提供する場合の問題は何ですか?そして、EJBを使用しないでください。ejbにはこれに対するワンストップソリューションがありますか?

つまり、この記事には次のように書かれています。この問題のために、Session(休止状態)またはEntityManagerの概念を使用するのは悪いことです。つまり、EJBステートレスBeanを使用する場合、またはセッション管理メカニズムを自分で提供できる場合(実装が難しいと思われる場合)を除いて、これを使用する必要はまったくありません。

4

1 に答える 1

0

まず、記事全体が、コンテナーの外部で実行されている場合のEntityManagerの管理の問題に焦点を当てていることに注意してください。その理由は、を使用すると、コンテナ管理のJPAがトランザクション対応のEntityManagerプロキシを挿入するため@PersistenceContextです。

「ユーザーが考える時間」とは何かわからないので、どのような問題を解決する必要があるのか​​わかりません。お気づきのとおり、何らかの理由でコンテナ管理のJPAを使用できない場合は、ThreadLocalを使用してEntityManagerを管理できます。もちろん、ThreadLocalの内容を適切にクリアしてスコープを設定するように注意する必要があります。

最終的に、十分な労力を費やした場合に自分で実行できないことをEJBが提供することはほとんどありません。EJBを使用することを選択することは、他のライブラリ/アーキテクチャを使用することを選択することと同じです。他の誰かがそれを維持したり、改善したりしますが、インフラストラクチャに適応する必要があります。EJBは、多くの企業が実装している標準に支えられているため、おそらくわずかな利点があります。

于 2013-01-11T16:14:39.540 に答える