Java
SpringBoot
CRUD(クラッド)
- CRUD(クラッド)は、以下の頭文字をとった言葉。
CRUD(クラッド) |
内容 |
Create |
データの作成 |
Read |
読み取り |
Update |
更新 |
Delete |
削除 |
- 基本的にCRUD機能は扱うデータの数だけ必要。
以下のそれぞれにCRUD機能が必要 |
内容 |
ログインする「ユーザー」というデータ |
usersテーブル |
予約する「民宿」というデータ |
housesテーブル |
MVCモデル
MVCモデルはSpring Bootを含む多くのフレームワークで採用されている。
Rubyの代表的なフレームワークであるRuby on RailsもMVCモデルを採用している。
- MVCは、以下の頭文字をとった言葉。
- モデル(Model)
- ビュー(View)
- コントローラ(Controller)
MVC |
役割 |
モデル |
アプリの「処理」を担当。データベースとやりとりし、データの作成、読み取り、更新、削除といった処理を行う。 |
ビュー |
アプリの「表示」を担当。コントローラから受け取ったデータを使って動的にHTMLを生成する。 |
コントローラ |
モデルとビューを制御する。ユーザー、モデル、ビューの橋渡し役。 |
MVCモデルを採用する主なメリット |
備考 |
複数人で開発する際に分業しやすい |
フロントエンドが得意なエンジニアがビューの作成を担当し、バックエンドが得意なエンジニアがモデルやコントローラの作成を担当する。 |
それぞれの独立性が高いので、コードを修正しても影響が少ない |
コードを修正しやすい。 |
モデル(Model)
- "モデル(Model)"はアプリの「処理」を担当する。
- 具体的には、データベースとやりとりしてデータの作成、読み取り、更新、削除といった処理を行うのが主な役割。
- データベース(厳密にいえばデータベースのテーブル)とやりとりするのがモデルの主な仕事なので、モデルはテーブルごとに作成する。
- Spring Bootでは"モデル(Model)"をさらに役割分担し、以下のようにファイルを分けることが多い。
役割 |
説明 |
ファイル名の例 |
エンティティ(Entity) |
テーブルの1行をオブジェクトとして表現するためのクラス。エンティティにはテーブルのカラムに対応するフィールドと、それらのフィールドにアクセスするためのゲッター、セッターを定義する。 |
House.java |
サービス(Service) |
ビジネスロジック(「宿泊人数が定員を超える場合は予約できないようにする」など、そのアプリ固有の処理やルールを実装する部分のこと)を担当する。 |
HouseService.java |
リポジトリ(Repository) |
データベースにアクセスし、CRUD処理を行う。データはエンティティとしてやり取りする。 |
HouseRepository.java |
ビュー(View)
- "ビュー(View)"はアプリの「表示」を担当する。
- 具体的には、コントローラから受け取ったデータを使って動的にHTMLを生成するのが主な役割。
- Spring Bootでは、"Thymeleaf(タイムリーフ)"と呼ばれる"テンプレートエンジン"の利用が推奨されている。
[テンプレートエンジン]
"テンプレートエンジン"とは、簡単にいえば、JavaやRuby、PHPなどの サーバーサイド言語 と HTML を 合体 させてビューを出力してくれる仕組みのこと。
"ビュー(View)"は基本的にHTMLと同じように記述できる。
if文を使って条件分岐させたり、繰り返し処理をおこなったり、変数の値を表示したりすることも可能。
コントローラ(Controller)
- "コントローラ(Controller)"は、"モデル"と"ビュー(View)"を制御する役割を担当する。
- "コントローラ(Controller)"とは、いわば、"ユーザー","モデル(Model)","ビュー(View)"の橋渡し役。
- "コントローラ(Controller)"とは、オーケストラの指揮者に例えると、"ユーザー=観客"、"モデル(Model)=演奏者"、"ビュー(View)=奏でられる曲"といったイメージ。
- Spring Bootの"コントローラ(Controller)"には、主に以下の内容を記述します。
"コントローラ(Controller)"に記述する内容 |
対応するパス(どのURLにアクセスされたときに処理を実行するか) |
モデルに実行してもらう処理 |
呼び出すビューのファイル名 |
Discussion