2

私はJPAとCDIを初めて使用し、これらのフレームワークを使用してエンタープライズアプリケーションを作成しようとしています。

Beanに注入して、すべてを整然とステートレスに保つ方法を学びます。また、JPAがリレーションなどをロードしてくれるので、もう心配する必要はありません。私は今でも特定の検索メソッドにDAOを使用しており、もちろん新しいエンティティを作成しています。

エンティティはJPAによって管理されているため、エンティティにコンテンツを挿入したくないことを理解しています。new新しいエンティティを作成するには、(ロードする代わりに)キーワードを使用する必要があります。

私は他のクラスでエンティティを管理することに慣れています。たとえば、ユーザーとグループがある場合、ステートレスBeanを使用してグループを管理し(新しいグループの作成、検索など)、このステートレスBeanはDAOを使用して取得します。データを送信します。

グループエンティティを使用してユーザーを管理していますが(これは間違っている可能性がありますか?)、DAOはエンティティであるため、グループに挿入したくありません。このデザインに何か問題があることは知っていますが、そのためのベストプラクティスを見つけることができません。

すべての管理クラスをEJBにする必要がありますか?ロジックのドメインクラスを作成することに慣れていますが、この概念を破棄し、すべてのロジックをEJBに配置し、データのみを保持するためにエンティティを使用する必要がありますか?

4

1 に答える 1

1

グループエンティティを使用してユーザーを管理していますが(これは間違っている可能性がありますか?)、DAOはエンティティであるため、グループに挿入したくありません。このデザインに何か問題があることは知っていますが、そのためのベストプラクティスを見つけることができません。

aGroupUsersがある場合は、これをコレクション(おそらくOneToMany)としてマップします。

別の別個のBeanを使用して、永続化操作をカプセル化します(例:aGroupServiceまたはa ) GroupDao。このBeanでは、永続性を担当するEntityMangerを注入します(「ユーザーとグループの管理」)。

このチュートリアルはあなたにスタートを与えるはずです。

すべての管理クラスをEJBにする必要がありますか?

確かに必ずしもそうとは限りません。しかし、あなたの要件を知らずに言うのは少し難しいです(読む:不可能)。より多くの情報を含む個別の質問を追加することをお勧めします。そうすれば、問題について話し合うのがはるかに簡単になります...

経験則として、エンティティ(Group、User)をビジネスロジックおよび永続化操作(GroupService、... Dao)から分離してみてください。

この本は、ポストJ2EEパターンに関する優れた概要と議論を提供していると思います。

于 2012-04-18T14:49:42.173 に答える