6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】3層アーキテクチャ in Spring Boot

Last updated at Posted at 2023-10-18

Webアプリケーション開発でよく使用される3層アーキテクチャについて、Spring Bootでの実装とともに説明してきます。今回は従業員管理システムの実装を例に話を進めていきます。Spring BootでWebアプリ開発を始めたばかりの方の参考になれば幸いです。

記事の構成

前半で3層アーキテクチャの基本を図解し、後半でSpring Bootでの3層アーキテクチャの実装を紹介します。

1. 3層アーキテクチャ

全体像をつかむ

スクリーンショット 2023-10-16 21.46.50.png

3層アーキテクチャの基本

3層アーキテクチャはプレゼンテーション層、ビジネスロジック層、データアクセス層(データ層)の3層からなるアーキテクチャです。

① プレゼンテーション層

  • クライアントから受け取ったHTTPリクエストを処理し、ビジネスロジック層に渡す
  • JSONをDTOに、DTOをJSONに変換 (Jacksonというライブラリを使用)
  • HTTPレスポンスをクライアントに返す

② ビジネスロジック層

  • プレゼンテーション層とデータアクセス層の仲介役として、クライアントにデータが返される前に、またはデータベースにデータが保存される前に、データ処理を行う
  • ユーザーが入力したデータがアプリケーションの条件を満たすかどうか確認する。例えば、従業員のメールアドレスが正しいか、ユーザーの年齢が18歳以上か等をチェックする
  • プレゼンテーション層に処理結果を返す
  • データアクセス層とやりとりしてデータを取得・保存する

③ データアクセス層

  • データベースに対してCRUD操作を行う

一連の流れを図で理解してみる

スクリーンショット 2023-10-17 18.27.30.png

スクリーンショット 2023-10-18 12.37.34.png

  1. クライアント(今回はPostmanを使用)が、ID:70の従業員のデータを取得するためHTTP GETリクエストを送信
  2. プレゼンテーション層でHTTPリクエストを処理し、ビジネスロジック層に渡す
  3. 必要に応じて、ビジネスロジック層で上に示したような処理を行う
  4. データアクセス層でID:70の従業員のデータをDBから取得する
  5. 逆の処理が行われ、クライアントが従業員のデータをJSON形式で取得する

2. 実装

このアーキテクチャをSpring Bootで実装する際、通常それぞれの層の役割を担うクラスを該当するパッケージ内でまとめます。

  • プレゼンテーション層 - Controllerパッケージ > Controllerクラス
  • ビジネスロジック層 - Serviceパッケージ > Serviceクラス
  • データアクセス層 - Repositoryパッケージ > Repostitoryクラス

プレゼンテーション層(Controllerパッケージ)

  • Controllerパッケージ内のクラスには@RestController または @Controllerアノテーションを付与する
  • 通常、これらのアノテーションが付与されたControllerクラス内でSerivceクラスを呼ぶ

2023-10-17 15.24のイメージ.jpg

ビジネスロジック層(Serviceパッケージ)

  • Serviceパッケージ内のクラスには、@Serviceアノテーションを使用する
  • Serviceクラス内で、Repositoryクラスを呼ぶことがある

2023-10-18 12.20のイメージ.jpg

2023-10-17 15.30のイメージ.jpg

データアクセス層(Repositoryパッケージ)

  • Repositoryパッケージ内のクラスには、@Repositoryアノテーションを付与することがある
  • JpaRepositoryインターフェイスを継承した独自のインターフェイスを定義することで、基本的なCRUD操作が可能
  • 今回の例では、JpaRepository<Employee, Long>を継承するEmployeeRepositoryインターフェイスを定義することで、Employeeエンティティに対してCRUD操作を行うことができる。JpaRepository<Employee, Long>では、Employeeエンティティの主キーのデータ型Longを指定している

2023-10-18 12.18のイメージ.jpg

まとめ

今回のSpring Bootによる3層アーキテクチャの全体像を示します。

スクリーンショット 2023-10-17 16.36.02.png

参照

日本語

英語

YouTubeで分かりやすいと思ったTeddy Smithさんの動画

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?