こんにちは。エンジニアの鈴木(@yamotuki)です。 今回はRepositoryパターンの設計方針を維持しながらSQLのN+1問題を起こさないようにする方法論について書いていきます。 前提 レイヤードアーキテクチャについて 弊社では、DDDの考え方を取り入れたレイヤードアーキテクチャが使われています。 GET処理に関わるコードですと、具体的には以下のようなレイヤに別れています。特に今回のお話に関わる部分は太文字にしておきます。 Controlller Scenario Service Query Service 画面やコマンド出力に必要な Data Transfer Object (以下D…