プログラミング 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入門】プリミティブ型と参照型とは?

概要 Javaのデータ型にはプリミティブ型と参照型があります。 ここではそれぞれの型はどのようにデータを保持しているのか? また、どのような種類があるのか? について学んでいきます。   プリミティブ …

【Java入門】演算子の種類と使い方まとめ

概要 Javaで使う演算子(計算を行うための記号)について、種類と使い方をまとめました。 備忘録として使ってください。   演算子 代入演算子 値の代入や代入時に計算を行う演算子です。 [crayon …

【Java入門】配列の扱い方まとめ

概要 配列の扱い方について学んでいきましょう。 配列は、同一の型の値を複数持つことができるデータ構造です。 ・int型の配列だったら、int(数値)を複数個持っている。 ・String型の配列だったら …

ユニークなListを持つファーストクラスコレクションの例

概要 正確に言うとListではなくSetです。 自分の確認と備忘録なのでご参考までに。 実装 ユニークなリストとしてSetで保持します。 Item 保持するオブジェクトです。 [crayon-6286 …

【Java】ArrayListの使い方まとめ

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

SpringFramworkの良書

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

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