SpringBoot/各レイヤの責務
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[SpringBoot]]
* Spring Boot における各レイヤの責務 [#d216c4ba]
- 2020-05-18 中村
- 2021-06-22 中村
Spring Boot (Spring MVC)における各レイヤの責務をまとめる
Entity, DTO, Form の役割も書いておく
** 概要 [#vf3d58cb]
Spring Bootにおける各レイヤのコンポーネント (@Controller,...
を設計・実装する際に,「この処理はどのコンポーネントで実...
と迷うことがある.
NTTデータが出しているSpring MVCの詳細なプラクティス [[Ter...
設計基準をまとめてみる.
** Springのレイヤード・アーキテクチャ [#bff17aa8]
&attachref(spring_layered_architecture2.png);
** ブラウザ [#a4322976]
ユーザに対して,Webアプリケーションを操作するユーザインタ...
主な責務
- 情報の表示
- 情報の入力
- ボタン操作
- リクエスト送信
- レスポンス受信
** ビュー [#z761da04]
ブラウザに表示するための画面を生成する.
Webアプリの場合,以下の2パターンの実装がある:
+ サーバ側でViewを生成するパターン(Thymeleaf)
-- 初等的なWebアプリで採用される.本コースで学ぶやり方
-- 実装しやすいが画面遷移を伴うためUXはイマイチ
+ クライアント側でViewを生成するパターン(HTML5+JavaScript)
-- モダンなWebアプリケーションで採用される
-- 1つのHTMLページを動的に書き換えてUXを向上.SPA (Single...
-- コントローラはRestControllerとして,画面生成せずにデー...
--- RestControllerはブラウザ以外からも呼び出せるので,ネ...
** コントローラ [#l3d7850c]
Webと業務プログラムの仲立ちをする.
ブラウザからのリクエストを受け取り,業務処理を指示し,処...
コントローラの役割は業務ロジック(サービス)を利用するた...
業務ロジックそのものに関連する処理を行ってはならない.
主な責務
- リクエストマッピング
- 入力データチェック(''バリデーション'')→ 参考:[[Sprin...
- Form/DTO ⇔ Entity の変換 (業務ルールに依存しない範囲で)
- 業務ロジックの呼び出し(具体的な処理の中身はService層に...
- 業務ロジックの結果をもとに,画面生成を指示
- 例外 → HTTPエラーマッピング (@RestControllerAdvice) [[S...
** サービス [#ueac7a11]
アプリケーション固有の''業務ロジック''を実行する.
業務ロジックは,ビジネスルールの実行,および,それに伴う...
ビジネスルールのチェックなどで構成される.
サービスのの役割は,''ビジネスルールに関わる処理に専念''...
業務データ(Entity)のDBへの出し入れはRepositoryに委譲す...
主な仕事
- ビジネスルールの実行
- ルールのチェックとビジネス例外のスロー
- DTO ⇔ Entity変換 (業務ルールに依存する部分.Entity作成...
- Repository経由での業務データ(Entity)の参照,更新
- トランザクション境界を宣言する (@Transactional)
-- 一つのメソッド内で,複数のEntityを更新する場合,すべて...
-- TransactionはControllerでやってはならない.Serviceの1...
*** 参考:ControllerとServiceで実装するロジックの責任分界...
Terasoluna より
本ガイドラインでは、ControllerとServiceで実装するロジック...
+ クライアントからリクエストされたデータに対する単項目チ...
+ Serviceに渡すデータへの変換処理(Bean変換、型変換、形式...
+ ビジネスルールに関わる処理はServiceで行う。業務データへ...
+ ServiceからControllerに返却するデータ(クライアントへレ...
** レポジトリ [#r101eea0]
業務データの操作(CRUD)を行う.
Java Beans (POJO)で保持されたEntityを,DBに入れて永続化す...
具体的なDB操作の詳細はService層からは隠ぺいされる.(DAOの...
Repository層の役割は,以下の2つである.
+ Entityのライフサイクル(CRUD)を制御する操作インタフェー...
+ Entityiの永続化を行う処理の実装を提供すること
Springの場合,CrudRepository等の出来合いのコンポーネント...
- 参考: [[SpringBoot/JPA]]
主な仕事
- EntityのCRUD
- カスタムクエリ
- メソッド → SQL の変換
- オブジェクト → RDBのマッピング (O/R マッピング)
** DTO, Form, Entityの区別 [#efb587b9]
- [[SpringBoot/DTO]] を参照
* 参考文献 [#bbca63fc]
- TeraSoluna ドメイン装の実装
-- http://terasolunaorg.github.io/guideline/5.5.1.RELEASE...
終了行:
[[SpringBoot]]
* Spring Boot における各レイヤの責務 [#d216c4ba]
- 2020-05-18 中村
- 2021-06-22 中村
Spring Boot (Spring MVC)における各レイヤの責務をまとめる
Entity, DTO, Form の役割も書いておく
** 概要 [#vf3d58cb]
Spring Bootにおける各レイヤのコンポーネント (@Controller,...
を設計・実装する際に,「この処理はどのコンポーネントで実...
と迷うことがある.
NTTデータが出しているSpring MVCの詳細なプラクティス [[Ter...
設計基準をまとめてみる.
** Springのレイヤード・アーキテクチャ [#bff17aa8]
&attachref(spring_layered_architecture2.png);
** ブラウザ [#a4322976]
ユーザに対して,Webアプリケーションを操作するユーザインタ...
主な責務
- 情報の表示
- 情報の入力
- ボタン操作
- リクエスト送信
- レスポンス受信
** ビュー [#z761da04]
ブラウザに表示するための画面を生成する.
Webアプリの場合,以下の2パターンの実装がある:
+ サーバ側でViewを生成するパターン(Thymeleaf)
-- 初等的なWebアプリで採用される.本コースで学ぶやり方
-- 実装しやすいが画面遷移を伴うためUXはイマイチ
+ クライアント側でViewを生成するパターン(HTML5+JavaScript)
-- モダンなWebアプリケーションで採用される
-- 1つのHTMLページを動的に書き換えてUXを向上.SPA (Single...
-- コントローラはRestControllerとして,画面生成せずにデー...
--- RestControllerはブラウザ以外からも呼び出せるので,ネ...
** コントローラ [#l3d7850c]
Webと業務プログラムの仲立ちをする.
ブラウザからのリクエストを受け取り,業務処理を指示し,処...
コントローラの役割は業務ロジック(サービス)を利用するた...
業務ロジックそのものに関連する処理を行ってはならない.
主な責務
- リクエストマッピング
- 入力データチェック(''バリデーション'')→ 参考:[[Sprin...
- Form/DTO ⇔ Entity の変換 (業務ルールに依存しない範囲で)
- 業務ロジックの呼び出し(具体的な処理の中身はService層に...
- 業務ロジックの結果をもとに,画面生成を指示
- 例外 → HTTPエラーマッピング (@RestControllerAdvice) [[S...
** サービス [#ueac7a11]
アプリケーション固有の''業務ロジック''を実行する.
業務ロジックは,ビジネスルールの実行,および,それに伴う...
ビジネスルールのチェックなどで構成される.
サービスのの役割は,''ビジネスルールに関わる処理に専念''...
業務データ(Entity)のDBへの出し入れはRepositoryに委譲す...
主な仕事
- ビジネスルールの実行
- ルールのチェックとビジネス例外のスロー
- DTO ⇔ Entity変換 (業務ルールに依存する部分.Entity作成...
- Repository経由での業務データ(Entity)の参照,更新
- トランザクション境界を宣言する (@Transactional)
-- 一つのメソッド内で,複数のEntityを更新する場合,すべて...
-- TransactionはControllerでやってはならない.Serviceの1...
*** 参考:ControllerとServiceで実装するロジックの責任分界...
Terasoluna より
本ガイドラインでは、ControllerとServiceで実装するロジック...
+ クライアントからリクエストされたデータに対する単項目チ...
+ Serviceに渡すデータへの変換処理(Bean変換、型変換、形式...
+ ビジネスルールに関わる処理はServiceで行う。業務データへ...
+ ServiceからControllerに返却するデータ(クライアントへレ...
** レポジトリ [#r101eea0]
業務データの操作(CRUD)を行う.
Java Beans (POJO)で保持されたEntityを,DBに入れて永続化す...
具体的なDB操作の詳細はService層からは隠ぺいされる.(DAOの...
Repository層の役割は,以下の2つである.
+ Entityのライフサイクル(CRUD)を制御する操作インタフェー...
+ Entityiの永続化を行う処理の実装を提供すること
Springの場合,CrudRepository等の出来合いのコンポーネント...
- 参考: [[SpringBoot/JPA]]
主な仕事
- EntityのCRUD
- カスタムクエリ
- メソッド → SQL の変換
- オブジェクト → RDBのマッピング (O/R マッピング)
** DTO, Form, Entityの区別 [#efb587b9]
- [[SpringBoot/DTO]] を参照
* 参考文献 [#bbca63fc]
- TeraSoluna ドメイン装の実装
-- http://terasolunaorg.github.io/guideline/5.5.1.RELEASE...
ページ名: