プログラミング 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


関連記事

【Java】ArrayListの使い方まとめ

概要 ArrayListはOracleの公式ページでも明記しているクラスです。 Java SE 11 Programmer I (1Z0-815-JPN) 試験 インタフェースによる抽象化 インタフェ …

【SpringBoot入門】#5~ 登録画面の作成

概要 共通ヘッダーの「新規登録」リンクから遷移する、書籍情報登録画面を作成します。 遷移できるようにControllerの作成と、遷移先である画面をHTMLで作成していきます。   Formクラスの作 …

elseを使わないことでパフォーマンスが下がる場合の対処法

  状況 前回記事(なぜelse、else ifを書かないようにすべきなのか?)のような ifのみで判定されており、それがfor文等の繰り返し処理の中にある場合は パフォーマンスが下がる。 …

ITエージェントが保有している案件数を比較してみました

概要 ITエージェントが保有している案件はどのくらいあるのか? また、Java案件に参画するにはどのエージェント経由が有利か? というちょっとした興味を元に調べてみました。 調査実施日:2021年5月 …

【Java】LinkedHashSetの使い方(挿入順を保持するSet)

LinkedHashSetはHashSetのサブクラスであり、同じメソッドが実装されています。 メソッドの使い方であればHashSetと同じなので、HashSetの使い方を参照下さい。  ↓ 【Jav …

記事を探す

SpringFramworkの良書

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

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