SpringBootの開発スタイルを解説していく-SpringBoot入門④

SpringBoot(Todo):サムネイル画像4 Todoアプリ(SpringBoot)

前回で Todo アプリの SQL を作成しました。

これまで3回も間を挟んでしまいましたが、ようやく Spring Boot 側の話に入ります。

今回は開発スタイルについて解説していきます。

システム構成図

こんな感じに設計していきます。

SpringBootでTodo開発:システム構成図1
システム構成図

画面幅の都合等で見づらい場合は以下の画像をクリックすると直接参照できます。

MySQL
MySQL
Adminer
Adminer
Controller
Controller
Service
Service
Repository
Repository
SpringBoot
localhost:8080
SpringBoot…
Dto・Entity
Dto・Entity
localhost:3306
localhost:3306
localhost:8000
localhost:8000
処理呼出
処理呼出
処理呼出
処理呼出
処理結果返却
処理結果返却
処理結果返却
処理結果返却
SQL 処理を実行させる
SQL 処理を実行させる
SQL の処理結果を返却
SQL の処理結果を返却
DBの中身
みせて
DBの中身…
内部情報
を返却
内部情報 を返却
型参照
型参照
型参照
型参照
型参照
型参照
React
localhost:3000
React…
リクエスト
リクエスト
レスポンス
レスポンス
SQL テーブルと対
になるように作成する
型定義ファイル
SQL テーブルと対…
ブラウザから接続
ブラウザから接続
Todo 画面を表示
Todo 画面を表示
パスワード等、ユーザーに見せたくない
情報を削ぎ落とすための型定義ファイル
パスワード等、ユーザーに見せたくない 情報を削ぎ落とすための型定義ファイル
開発者
開発者
ブラウザ
から接続
ブラウザ から接続
DB 管理画面を表示
DB 管理画面を表示
Ubuntu
Ubuntu
Text is not SVG – cannot display

なお、今回は Spring Boot 編なので、フロントエンド側の React は触れません。

両方触れると、どちらの機能を実装しているのか紛らわしくなるため、React 側の実装は別記事で解説します。

フロントエンド言語についての補足

フロントエンド側の言語は React じゃなくてもいいです。

API経由でデータを送受信してるだけなので、fetch 処理さえ作成すれば Vue, Nuxt, Next 等でも同様の Todo アプリを開発できます。

何なら JavaScipt 単体でも問題ないです。

そのため、React 以外で開発したい場合は、そちらを使用していいです。

Spring Boot の概念説明

何を作ればいいのか説明します。

Spring Boot は、基本的に5種類のファイルで構成されます。

  1. Controller
  2. Service
  3. Repository
  4. Entity
  5. 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 で使用しているプロジェクトもあります。

上記の5つ以外にも、例外処理をこなす Exception や ログイン・アクセス等の制御を行う SecurityConfig がありますが、ここら辺は少し複雑なので、最後の発展編で扱おうと思います。

作成順序

この順番で作成していきます。

  1. Entity
  2. Repository
  3. Service
  4. Controller

なお、Dto に関しては、必要になったらその都度作成します。

役割の都合上、ピンポイントで狙って作成できるようなファイルではありません。

まとめ

今回は Spring Boot の概念を可能な限り簡潔に解説しました。

次回は SQL テーブルに対応する Entity を作成していきます。

タイトルとURLをコピーしました