ここでのほとんどすべての質問と、www の関連する多くの議論を読みましたが、それでも要点をよく理解できていません。状況...
私のひどい英語と混乱した用語を許してください、しかし私はDAOとリポジトリの違い/利点/警告にはあまり興味がありません.これは質問の「核心」を変えないと思いますが、多分私は間違っています. .
明らかに、この例は単純すぎて、どのソリューションも簡単にやり過ぎてしまいますが、これははるかに大きなシステムの「ケース」と考えてください。
電話をかける相手をセールスマンに提案するアプリケーションを作成する必要があるとします。
各見込み客には、いくつかの「テキスト」データ (つまり、名前、性別、生年月日、住所、電話番号、電子メールなど)、写真、および他の人やベンダーとのやり取りの履歴があります。
テキスト データは Mysql テーブル (人) に存在し、写真はファイル システムのどこかにあり、誰かがすでにサービスをリリースしており、セールスマンとバイヤーとしてのすべての見込み客のスコアを考慮して、連絡を取ることに関心がある可能性のある人のリストを返します。
私はおそらく次のようになります:
名前、電話番号、住所、電子メール、写真を含むドメイン オブジェクトの人物。すべてのプロパティとメソッド getScore() のセッターとゲッター。
2 つの DAO、1 つは mysql テーブル用、もう 1 つはファイルシステム用です。
特定のセールスマン (アプリケーションのユーザー、この例の範囲外) の見込み客のリストを取得するサービス。
私には明らかではないこと:
ドメイン オブジェクトのメソッド getScore() は、サービス層のサービスを直接呼び出すことができますか? そうでない場合、なぜですか?
異なる DAO からのデータには別の DTO が必要ですか?
もしそうなら、2 つの情報を組み立てる方法 (つまり、mysql DAO から URI を取得し、ファイルを取得し、画像をロードする) に関するロジックを所有する、ある種のマネージャーまたは「スーパー」DAO が必要ですか? これは、データ層またはサービス層に存在する必要がありますか? (データが保存されている限り、データ層にとどまるべきだと思われます)。
マネージャーまたは「スーパー DAO」の出力は、別の DTO である必要がありますか、それとも直接ドメイン オブジェクトである可能性がありますか?
DTOの場合、マネージャー/スーパーDAOを呼び出してドメインオブジェクトを構築するサービスが必要ですか(この場合、サービスはスコアをドメインオブジェクトに「追加」すると想定しています)。
明確な質問であることはわかっていますが、ソリューションを設計する方法を理解できません。