■シーケンス図
sequenceDiagram
participant ブラウザ
participant MemoController
participant MemoService
participant MemoRepository
participant Memo
ブラウザ->>+MemoController: HTTPリクエスト (例: GET /memos)
MemoController->>+MemoService: getAllMemos()
MemoService->>+MemoRepository: findAll()
MemoRepository-->>Memo: Memoリストを作成
MemoRepository-->>-MemoService: List<Memo>
MemoService-->>-MemoController: List<Memo>
MemoController-->>-ブラウザ: List<Memo>を含むレスポンス
ブラウザ->>+MemoController: HTTPリクエスト (例: POST /memos)
MemoController->>+MemoService: saveMemo(memo)
MemoService->>Memo: 新しいMemoオブジェクトを作成
MemoService->>+MemoRepository: save(memo)
MemoRepository-->>Memo: Memoオブジェクトを保存
MemoRepository-->>-MemoService: 保存されたMemo
MemoService-->>-MemoController: 保存されたMemo
MemoController-->>-ブラウザ: リダイレクトレスポンス
ブラウザ->>+MemoController: HTTPリクエスト (例: GET /memos/edit/{id})
MemoController->>+MemoService: getMemoById(id)
MemoService->>+MemoRepository: findById(id)
MemoRepository-->>Memo: Memoオブジェクトを取得
MemoRepository-->>-MemoService: Memo
MemoService-->>-MemoController: Memo
MemoController-->>-ブラウザ: Memoを含むレスポンス
ブラウザ->>+MemoController: HTTPリクエスト (例: POST /memos/{id})
MemoController->>+MemoService: updateMemo(id, memo)
MemoService->>+MemoRepository: findById(id)
MemoRepository-->>Memo: Memoオブジェクトを取得
MemoRepository-->>-MemoService: Memo
MemoService->>Memo: 更新処理 (setDescription, setPolicy, setResult)
MemoService->>+MemoRepository: save(memo)
MemoRepository-->>Memo: Memoオブジェクトを更新
MemoRepository-->>-MemoService: 更新されたMemo
MemoService-->>-MemoController: 更新されたMemo
MemoController-->>-ブラウザ: リダイレクトレスポンス
ブラウザ->>+MemoController: HTTPリクエスト (例: POST /memos/delete/{id})
MemoController->>+MemoService: deleteMemo(id)
MemoService->>+MemoRepository: deleteById(id)
MemoRepository-->>Memo: Memoオブジェクトを削除
MemoRepository-->>-MemoService: 完了
MemoService-->>-MemoController: 完了
MemoController-->>-ブラウザ: リダイレクトレスポンス
■クラス図
classDiagram
class ProjectApplication {
+main(String[] args)
}
class MemoController {
-MemoService memoService
+listMemos(Model model)
+newMemo(Model model)
+saveMemo(Memo memo)
+editMemo(Long id, Model model)
+updateMemo(Long id, Memo memo)
+deleteMemo(Long id)
}
class MemoService {
-MemoRepository memoRepository
-Random random
+getAllMemos(): List<Memo>
+getMemoById(Long id): Optional<Memo>
+saveMemo(Memo memo): Memo
+updateMemo(Long id, Memo memo): Memo
+deleteMemo(Long id): void
-getResult(): String
-roll(): int
}
class MemoRepository {
}
class Memo {
-Long id
-String description
-String policy
-String result
+getId(): Long
+setId(Long id)
+getDescription(): String
+setDescription(String description)
+getPolicy(): String
+setPolicy(String policy)
+getResult(): String
+setResult(String result)
}
ProjectApplication --> MemoController
MemoController --> MemoService
MemoService --> MemoRepository
MemoRepository --> Memo
■遷移図
graph TB
subgraph パソコン
browser[ブラウザ]
end
subgraph SpringBoot["Spring Boot"]
browser --> |1. HTTPリクエスト| Tomcat[Tomcat]
Tomcat --> |2. リクエスト転送| DispatcherServlet[DispatcherServlet]
DispatcherServlet --> |11. ビュー選択| ViewResolver[ビューリゾルバ]
ViewResolver --> |13. テンプレート処理| Thymeleaf[Thymeleaf(テンプレートエンジン)]
Thymeleaf --> |14. HTML生成| ViewResolver
ViewResolver --> |15. HTML返却| DispatcherServlet
end
subgraph JavaProgram["Javaプログラム"]
DispatcherServlet --> |3. リクエスト処理| Controller[コントローラ]
Controller --> |4. ビジネスロジック実行| Service[サービス]
Service --> |5. データベース操作| Repository[リポジトリ/モデル]
Repository --> |8. 結果返却| Service
Service --> |9. 結果返却| Controller
Controller --> |10. レスポンス返却| DispatcherServlet
end
subgraph データベース
Repository --> |6. クエリ実行| テーブル
テーブル --> |7. クエリ結果| Repository
end
subgraph テンプレート["html"]
Thymeleaf <--> |13. テンプレート読み込み| 自分作成のhtml
end
DispatcherServlet --> |16. HTTPレスポンス| Tomcat
Tomcat --> |17. HTTPレスポンス| browser
style テーブル fill:#FFDDC1,stroke:#FF0000,stroke-width:2px
style Repository fill:#FFDDC1,stroke:#FF0000,stroke-width:2px
style Service fill:#FFDDC1,stroke:#FF0000,stroke-width:2px
style Controller fill:#FFDDC1,stroke:#FF0000,stroke-width:2px
style 自分作成のhtml fill:#FFDDC1,stroke:#FF0000,stroke-width:2px
src/main/resources/staticディレクトリに静的なHTMLページを作成します。src/main/resources/templatesディレクトリにThymeleafテンプレートを作成します。src/main/resources/static/jsディレクトリにJavaScriptファイルを作成します。Create機能:
Read機能:
Update機能:
Delete機能:
| http | プログラム(CRUD) | データベース(SQL) |
|---|---|---|
| post | Create | insert |
| get | Read | select |
| put | Update | update |
| delete | Delete | delete |