DAOは基本的なCRUD操作のためだけに予約されているのですか、それとも複雑な検索ロジックが含まれている可能性がありますか?DAOの適切な使用について
は、2つのエンティティクラス帳と著者とそれらの間の多対多の関係を想像してみてください。この時点では、両方のエンティティの基本的なCRUD操作が同じであるため、単一のDAOで十分である可能性があります。アプリはより複雑になるにつれて
しかし、新しい要件は、例えば、表示されます。 1.著者は、時間 3の期間中に書かれた本を見つける与え著者 2.のための最初の本を見つけます。与えられた著者が 4を書いたことを特定のトピックに関する書籍は、これらすべてが行くべき
に
など....見つけますか?今、各エンティティごとに別々のDAOクラスを作成し、そこに配置しますか?彼らはDAO層に属していますか? BookDAOに findBooks(著作者) findBooks(出版社の出版社) の両方を、またはAuthorDAOで1、他のPublisherDAO: はどこ以下の方法が行く必要があります。私はこのジレンマを持っていますか?
それとも私はDAOをの上で、基本的なCRUD OPSにそれらを残して完全に新しい抽象化、を考える必要があります - すべての可能な検索を示しています例えばSearchService、?
私は通常、そのエンティティのDAOで特定のエンティティを返すメソッド(またはエンティティのコレクション)を置きます。あなたが与えた2つの例は両方ともBookDAO IMOに行くでしょう。それ以外の場合は、 'findBooks(Athor author、Publisher publisher)' – soulcheck