プログラミング Java

【SpringBoot入門】#12~ 削除機能の実装

投稿日:2021年1月23日 更新日:

概要

ダイアログでOK押下された場合の削除処理を実行します。
画面からリクエストされた書籍情報IDをキーに、論理削除を実装します。
システム開発ではほとんどの場合、論理削除を行います。
物理削除するのは、洗い替えでデータを全て入れ替えるときくらいしか私は知りません。
 

フロントエンド

リクエスト

検索結果の削除ボタンからリクエストします。
その際、書籍情報IDとVersionが送信します。

・書籍情報ID
 削除するキーになります。

・version
 削除対象が他のユーザによって更新されていない場合のみ削除できるよう、
 versionの値でチェックするために使用します。

楽観ロックのエラー表示

list.html(検索一覧)に、楽観ロックにより削除できなかった場合の
エラー表示枠を作成しておきます。

 

バックエンド

Controller

・serviceへの委譲
 idとversionを引数に処理を委譲します。
 他のユーザによって既に削除済か、更新されている場合は
 削除できない旨のエラーメッセージが返却されます。

・エラーメッセージの返却
 楽観ロックでエラーが発生した場合、画面上で表示できるように
 エラーメッセージをmodelに格納しておきます。

Service

・楽観ロックによるチェック
 更新処理時と同じで、楽観ロックによるチェックを行います。
 もし既に削除済か更新されていた場合は、楽観ロックの例外(OptimisticLockingFailureException)が発生するようにしておきます。

・削除処理
 削除済でも更新されてもいない場合は、削除処理を実行します。
 Repositoryには、書籍情報ID、version、削除ユーザIDを引数に渡します。

Repository

BookRepostory.javaには、メソッドのみを実装します。

SQLをXMLに記述します。

・更新カラム
 削除ユーザは引数の値とし、削除日時は実行日時とします。

・条件
 引数で渡された、書籍情報IDとversionとします。
 

動作確認

  • 削除処理が正常に実行されること
    1. 検索一覧で任意の書籍情報の削除ボタンを押下する。
    2. 削除ダイアログでOKボタンを押下する。
    3. 検索を実行し、削除した書籍情報が表示されていないこと。
    4. MySQL Workbenchでテーブルを参照し、削除したレコードの削除日時、削除ユーザが更新されていること。
  • 削除処理がキャンセルされること
    1. 検索一覧で任意の書籍情報の削除ボタンを押下する。
    2. 削除ダイアログでキャンセルボタンを押下する。
    3. 検索を実行し、キャンセルした書籍情報が表示されていること。
  • 楽観ロックによって削除が失敗すること
    1. 任意の条件で検索する。
    2. 検索結果の画面を複製する(Chrome想定[画面のタブを右クリック ⇒ タブを複製]
    3. 複製元画面の検索一覧から任意の書籍情報を編集する。
    4. 複製先画面の検索一覧から、複製元画面で編集した書籍情報と同じものを削除する。
    5. 削除処理に失敗した旨のエラーメッセージが検索画面に表示されること。

まとめ

  • 削除処理は論理削除で実装する。
  • 削除するキーはテーブルのユニークキー(今回の場合は書籍情報ID)である。
  • versionは楽観ロックとして活用する。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

映画のレイティング判定をStateパターンで実装する

ユーザが見ることができる作品を、映画のレイティングシステムに従って選別できるように実装します。 映画のレイティングシステムとは、年齢制限する規制のことです。 G:全年齢 PG12:12歳以上 R15+ …

【Javaサンプル】自動販売機を作成(Level1)

Javaの勉強用サンプルです。 テーマは自動販売機。 プログラミング初心者向けに書いています。   自動販売機を題材として選んだ理由 自社研修で行っている 自社研修で自動販売機を作成したので …

【Java】オブジェクト指向の練習題材(会計オブジェクト)

前回記事、オブジェクト指向とは何なのかを簡単に説明してみるの練習題材です。 ここでは3つのオブジェクトを作成していきます。 – 会計オブジェクト:会計金額の算出 – 請求書オブ …

【Java入門】クラスの基本

概要 以前、クラスとインスタンスの違いでクラスについて簡単に触れました。 ここではクラスの内容を掘り下げて説明していきます。   クラスの構成 クラスの基本構成は以下の3つです。 ・フィールド  :ク …

pageEncodingとcontentTypeのcharsetの違い

pageEncodingとcontentTypeのcharsetは処理されるタイミングが異なります。 それによって文字化けの原因につながっているので、どのように設定すればいいかを解説していきます。 違 …

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。