1

アプリケーションでEJB3を使用しています。私たちの設計の目的は、永続層をビジネス層から分離することです。そこで、SLSBとして使用するXXXbeanクラスと、永続性クラスとして使用するXXXRepositoryクラスを開発しました。また、再利用可能な非ビジネスロジック(国のリストを取得するなど)を実装するPOJOがあり、サービス/ヘルパークラスと呼ばれます。

(Hibernateプロバイダーを使用して)E​​JB3 JPAを使用し、リポジトリクラスにはCRUD操作用のすべてのメソッドとデータアクセス用のgetメソッドがあります。現在、XXXRepositoryクラスはすべてPOJOであり、これらのクラスをBeanXXXClassesまたはサービスObjectsから直接インスタンス化します。

XXXRepositoryクラスはSLSBである必要がありますか?それらをSLSBに変換することの利点と落とし穴は何でしょうか?

4

1 に答える 1

0

EJB はコンテナー管理 Bean です。つまり、コンテナーは、トランザクション、セキュリティ、リソース アクセス (データベースなど) などの多くのオプションを管理し、タイマー、リモート アクセス、インターセプターなどの可能性を提供します。もう 1 つの利点は、プールとインスタンスの再利用です。

エンティティマネージャーのようなこのコンテナー管理オプションから何かが必要な場合は、EJB (あなたの場合は SLSB) を使用してください。ただし、提供されている機能がまったく必要ない場合は、通常の POJO がその役割を果たします。

XXXRepository クラスが SLSB でない場合、データベースにアクセスして CRUD 操作を実行するにはどうすればよいでしょうか? Hibernate Session を直接使用していますか? トランザクションはどのように管理されますか? この場合、SLSB でこれらのクラスを変換し、挿入されたエンティティ マネージャーを使用することが理にかなっている場合があります。

Adam Bien はReal World Java EE Patternという本を書いています。この本の中で彼は優れた EJB アーキテクチャについて書いており、どのクラスを EJB にする必要があるか (たとえば、トランザクション境界としての ServiceFacade)、およびどのクラスを POJO として使用できるかについても言及しています。

于 2010-03-02T15:58:00.323 に答える