1

Java EE/Spring アプリケーションがあり、DAO と、最終的にはコントローラーにデータを提供する @Service オブジェクトがあるとします。

コントローラー/プレゼンテーションレイヤーに必要なデータ全体を取得するために、DAO/サービスメソッドを構築します。

  • どのデータを取得するか (基準、クエリの場所、カウントの制限など)
  • どのデータを取得するか (レイジー/イーガー フェッチ)

これで、ほぼ同じ方法で、少なくとも 2 つのシーンを作成できます。

  1. X の場所でデータを取得します (複雑な条件/ロジックになる可能性があります)。ただし、単純なデータのみを提供します (遅延初期化によりそれが得られます)。
  2. X (上記と同じ条件/ロジック) でデータを取得しますが、コレクションなどを含む完全な初期化エンティティを提供します (熱心な初期化がそれを提供します)。

コントローラーには切り離された状態のオブジェクトがあるため、「遅延部分」を初期化できません。フェッチ タイプを定義するか、DAO メソッド クエリで既に決定を下しています。

遅延初期化は問題 1. を解決しますが、状況 2. がない場合、別の DAO/サービス メソッドで条件ロジックを複製するか、次のようなメソッドを作成する必要があります。

getClientsFromLastMonthWithoutAddresInfo() getClientsFromLastMonthWithAddresInfo() getClientsFromLastMonthWithAddressInfoAndPersonalData()

この問題を解決するにはどうすればよいですか?

4

0 に答える 0