背景
最近Java(Springboot)の開発プロジェクトに配属されまして、もしかしたらコーディングするかもしれません。がっつり開発していたのは10年以上も前で、カッコイイFWも使ってなく、if文for文を駆使してロジック書くような現場でした。
今までソースは順々に追って読んで理解していたのですが、FWは既にある色んな部品を使いまくってシステムを作っていくようでした。
なので、ソースを追って理解することが難しく、フレームワークとしての決まりごとや、使えるものを覚えようって感じです。
まずは構造から。
Spring プロジェクトでよく見るパッケージ
✅ Entity
-
目的
データベースのテーブルと対応するクラス -
使われ方
- DB に保存・取得するときに使う
✅ Model
-
目的
プロジェクトによって意味が変わるが、だいたい「アプリ内で使うデータ」 -
使われ方
- View に渡すデータとして使うことがある
- Entity と同じ意味で使われることもある
✅ DTO(Data Transfer Object)
-
目的
API のリクエストやレスポンスでやりとりするデータ用クラス -
使われ方
- Controller で返す
- Entity から変換して作る
✅ Repository
-
目的
データベースにアクセスするためのクラス
(SQL を直接書く代わりに利用する) -
使われ方
- DB からデータを取り出す
- DB にデータを保存・更新・削除する
- Service から呼び出して使う
🔑 まとめ
- Entity → DB のデータを表す
- Model → アプリ内で使うデータ(意味はプロジェクトごとに変わる)
- DTO → API 入出力用のデータ
- Repository → SQL の代わりに使う、DB とやりとりするクラス
さいごに
これらのパッケージに違いがよく分からなくてAIに教えてもらいました。
いい感じに分かりやすく教えてもらえたので、ひとまず自分用のメモとして残します。