Skip to content

発展質問:サンプルよりもやや複雑な検索処理を実装したい場合 #94

Answered by budougumi0617
tenkoh asked this question in Q&A
Discussion options

You must be logged in to vote

ご質問ありがとうございます!お返事すぐかけるかわかりませんが && ベストアンサーがかけるかわかりませんが何でも聞いてもらってOKです!

よくも悪くもGoはあまり「ルール」がないので設計方針によるかなと思います。チーム・リポジトリの中で統一された設計思想があれば問題ないかなと思います。@tenkoh -sanに記載していただいた考え方も良いと思います!
(身も蓋もない回答でごめんなさい)。

私の場合

個人的にはパフォーマンスが問題になるまでは素朴なリポジトリの実装でservice層でデータを組み立てるアプローチでもいいかなと思います。
ただし、「タスクをユーザー名で検索する」みたいな検索条件を実装する必要がある場合はJOINする一択になるかなとは思います。

考えたこと

そのうえで思いついたいくつかのアプローチとメリデメ並べると以下のような感じでしょうか。

どこでデータを組み合わせるか

  • ロジック層(service pkg, usecase pkg etc...)で組み合わせる
    • メリット: SQLの実装はシンプルに保てる
    • デメリット: 関連エンティティが多いとそれぞれでデータを取得する必要がある
    • デメリット: パフォーマンスが良くない
    • デメリット: 「検索条件」の実装はまずできない
  • リポジトリ層(repository pkg, store pkg, datastore pkg etc...)で組み合わせる
    • メリット: 冗長なDBへのアクセスやデータ取得をせずにすむ
    • メリット: 検索の実装をするとき、絞り込みをSQLで実装できる
    • デメリット: ユースケースごとに実装を…

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@tenkoh
Comment options

Answer selected by tenkoh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants