エンティティクエリメソッドを配置する場所(どのレイヤー)“ persist”メソッドなど?
質問
いくつかのJPA / Hibernateエンティティを持つSEAMアプリがあります。そして今、クエリ、永続化メソッドをどこに置くべきか疑問に思います。
デフォルトの選択では、注入されたセッションBeanレイヤーに配置されているようです
@PersistenceContext(...) @Inject EntityManager entityManager;
しかし、エンティティ自体にメソッドが必要だと思います。賛否両論は何ですか?
- テスト可能性
- ニース?
- パフォーマンス?
また、セッションBeanではなく、エンティティのメソッドからEntityManagerなどと対話するためのベストプラクティスへのリンクがありますか?
最高、 アンダース
解決
SEAMの経験はありませんが、Javaプロジェクトの経験から、Beanをpersistメソッドから明確に保つのが最も簡単であることがわかりました。私たちが通常行うこと:
- ビジネスオブジェクト用のBeanを使用します(たとえば、" User"や" Setting"など)
- これらのBeanを保持および取得できるDAOレイヤーを用意する(シンプルなCRUD)
- Beanの処理方法、および場合によってはBeanの集合体の構築方法を提供するサービス層を用意します
これにより、すべてがかなり分離され、ユニットテストが簡単になります。通常、このセットアップではパフォーマンスは問題になりません。
他のヒント
はい、それは私が以前にやったことでもあります。
一般に、EJBはめちゃくちゃ冗長で定型的だと思いますが、SEAMは実際には少し役立ちます。そのため、現在のプロジェクトでは、クエリと永続化のためだけのセッションBeanの追加レイヤーが悩まされます。このレイヤーを殺すことができれば、合理的に簡潔なアプリを作成できると感じています...
所属していません StackOverflow