4

JSR-000220 Enterprise JavaBeans 3.0 Final Release (persistence) 仕様に次のように記載されていることは承知しています。

「一般に、ポータブル アプリケーションは、EntityManager またはクエリ操作を呼び出したり、他のエンティティ インスタンスにアクセスしたり、ライフサイクル コールバック メソッドで関係を変更したりしないでください。」

これは非常に制限的であると思われます。EntityListener 内から EntityManager にアクセスしたい状況があります。

Jboss/Glassfish、またはその他のアプリケーションサーバーのリスナー内から EntityManager を使用するときに、悪影響や落とし穴に遭遇した人はいますか?

4

1 に答える 1

2

実際、あなたは正しいです。JPA仕様はそれを示しており、その場合は、代わりにEJBリスナー(または非JavaEE環境ではSpringAOP)を提案します。

私はあなたのリスナーの目的を知りません。ただし、ロギング、認証、ルーティングなどの横断的関心事のみをその中に入れてください。たとえば、Hibernateリファレンスドキュメントは、すべてのオブジェクト変更のログを監査するためにリスナーを使用します。これは、EJBリスナーがエンティティマネージャーを使用できるようになると、EJBリスナー(またはJavaEE以外の環境ではSpringAOP)によって実行できます。JavaEE仕様ではそれが可能です。したがって、EJBリスナーは、ターゲットEJBで使用されるのと同じENCを共有し、このようにして、同じ永続コンテキスト(エンティティマネージャ)も共有します。

よろしければ、私のプロフィールをご覧ください。ORMに関連する問題がたくさんあります。

よろしく、

于 2009-07-26T18:11:39.037 に答える