私の経験では (制限はありますが)、DAO
クラスには、アプリケーションが実行できるすべての可能なデータベース操作が含まれる傾向があります。したがって、あなたの場合、getAllClients()
やなどのメソッドがありますgetClientByName(String name)
。
DAO 内のすべてのユーザーを取得し、必要なユーザーが見つかるまですべてのユーザーを反復処理すると、計算時間とメモリ消費が不必要に無駄になります。
データベースがヒットする回数を減らしたい場合は、キャッシング メカニズムを実装することもできます。ここに示すように、 HibernateなどのORMフレームワークは、必要なものを提供できるはずです。
編集:
コメントの質問によると、いいえ、サービスが冗長になることはありません。通常、Service
レイヤーを使用して機能を公開しDAO
ます。これにより、基本的に、DAO
アプリケーションのフロントエンドからは見えなくなります。通常、たとえば などの追加のメソッドも使用できますpublic String getUserFormatted(String userName)
。これgetUserByName
により、DAO
が提供する機能が利用されますが、いくつかの追加機能が提供されます。
Service
仕様に変更があり、アプリケーションとインターフェースするための Web サービスも必要になった場合、このレイヤーはそれ自体も有用になります。間にサービス レイヤーを配置すると、Web サービスはレイヤーDAO
を介してクエリを実行できますService
。
したがって、基本的に、サービスがDAOを公開せずに返されたデータを適応させている間、DAO
レイヤーはデータベースのもの(CRUD操作)を心配します。DAO