前回で Todo アプリの SQL を作成しました。
これまで3回も間を挟んでしまいましたが、ようやく Spring Boot 側の話に入ります。
今回は開発スタイルについて解説していきます。
システム構成図
こんな感じに設計していきます。

画面幅の都合等で見づらい場合は以下の画像をクリックすると直接参照できます。
なお、今回は Spring Boot 編なので、フロントエンド側の React は触れません。
両方触れると、どちらの機能を実装しているのか紛らわしくなるため、React 側の実装は別記事で解説します。
フロントエンド言語についての補足
フロントエンド側の言語は React じゃなくてもいいです。
API経由でデータを送受信してるだけなので、fetch 処理さえ作成すれば Vue, Nuxt, Next 等でも同様の Todo アプリを開発できます。
何なら JavaScipt 単体でも問題ないです。
そのため、React 以外で開発したい場合は、そちらを使用していいです。
Spring Boot の概念説明
何を作ればいいのか説明します。
Spring Boot は、基本的に5種類のファイルで構成されます。
- Controller
- Service
- Repository
- Entity
- Dto
1. Controller
フロントエンド側と API 通信をを行うファイルです。
アクセス用の url を設定し、フロントエンド側からリクエストが送信されると Service から処理結果を受け取り、レスポンスとしてフロント側へ返却します。
デフォルトだとレスポンスの返却値は JSON データに変換されます。
2. Service
業務ロジック専門のファイルで、Repository から受け取った DB データを元に何らかの処理を実行します。
Controller から呼び出され、処理結果を Controller に返却します。
3. Repository
データベース操作を行うファイルです。
実際に SQL 文を実行して、データの参照・登録・更新・削除といった、いわゆる CRUD 処理を実装していきます。
Service から呼び出され、処理結果を Service に返却します。
4. Entity
Repository が参照する型定義ファイルで、SQL テーブルの数だけ用意します。
DB データ取得後に、Spring Boot 側ではどんな型として扱うか定義する役割を担います。
基本的にはテーブル定義と同じ型にしますが、Spring Boot では表記が異なったり、そもそも存在しない型もあるので、その場合は似たような型を代わりに定義します。
- tinyint(1) → boolean
- bigint → long
などが例としてあります。
5. Dto
不要なデータを排除して、都合のいい値のみを残すための型定義ファイルです。
例えば、ユーザーテーブルに対応する Entity をそのまま、
Repository→Service→Controller→フロントエンド
と芋づる式で返却した場合、パスワードや個人情報など機密にしておきたいデータまで全て渡ってしまいます。
そのため、このような問題が発生すると判断した場合は Dto を作成し、パスワードや個人情報を排除したデータに変更してから返却します。
大体は Repository や Service 等で使用しますが、Controller で使用しているプロジェクトもあります。
作成順序
この順番で作成していきます。
- Entity
- Repository
- Service
- Controller
なお、Dto に関しては、必要になったらその都度作成します。
役割の都合上、ピンポイントで狙って作成できるようなファイルではありません。
まとめ
今回は Spring Boot の概念を可能な限り簡潔に解説しました。
次回は SQL テーブルに対応する Entity を作成していきます。