Java EE/Spring アプリケーションがあり、DAO と、最終的にはコントローラーにデータを提供する @Service オブジェクトがあるとします。
コントローラー/プレゼンテーションレイヤーに必要なデータ全体を取得するために、DAO/サービスメソッドを構築します。
- どのデータを取得するか (基準、クエリの場所、カウントの制限など)
- どのデータを取得するか (レイジー/イーガー フェッチ)
これで、ほぼ同じ方法で、少なくとも 2 つのシーンを作成できます。
- X の場所でデータを取得します (複雑な条件/ロジックになる可能性があります)。ただし、単純なデータのみを提供します (遅延初期化によりそれが得られます)。
- X (上記と同じ条件/ロジック) でデータを取得しますが、コレクションなどを含む完全な初期化エンティティを提供します (熱心な初期化がそれを提供します)。
コントローラーには切り離された状態のオブジェクトがあるため、「遅延部分」を初期化できません。フェッチ タイプを定義するか、DAO メソッド クエリで既に決定を下しています。
遅延初期化は問題 1. を解決しますが、状況 2. がない場合、別の DAO/サービス メソッドで条件ロジックを複製するか、次のようなメソッドを作成する必要があります。
getClientsFromLastMonthWithoutAddresInfo()
getClientsFromLastMonthWithAddresInfo()
getClientsFromLastMonthWithAddressInfoAndPersonalData()
この問題を解決するにはどうすればよいですか?