論理削除とrollbackの話
今日のまとめ
論理削除と物理削除
物理削除はDELETE文を使って物理的にデータを削除してしまうことです。データベースから完全にレコードを削除してしまって、簡単には復元することはできません。(バックアップデータから復元しなければいけない)
対して論理削除は、間違って消してしまっても簡単に復元できます。データベースにフラグとなるフィールドを用意しておいて、削除するときに削除フラグを立てることで、表示時にそのデータを見せなくする方法です。UPDATE文を使います。
こんなときに論理削除を使います。
ユーザーからはデータがないように見せたいけど、実際のデータは消したくないとき
"削除した"データを検索したい
誤った操作をしたとき、すぐに元に戻したいとき
削除フラグ・・・「削除したものとして扱いますよ」というフラグ
rollback
トランザクションで行われた作業を元に戻すためのメソッドです。現在のトランザクションを終了して、保留中の変更をすべてデータベースにロールバックします。
7ちゃんの例
7ちゃんがデータを更新して新しいデータに変更されるまで一連の流れをトランザクションといいます。
7ちゃんは"hachichan"というアカウント名に変更しようとしていますが、更新中にエラーが起きてしまいました。そのため、"hachichan"という更新途中のデータはトランザクションを開始したときの"nanachan"という更新前のデータに戻ってしまいます。
つまり、トランザクションを開始して、何らかの障害が更新途中の処理で起きてしまった場合、更新途中のデータでもトランザクション開始時の状態に戻してデータの整合性を保つ処理を行う必要があります。この処理のことをロールバックといいます。
ロールバック・・・データ更新などで障害が起こったときに、その前の状態にまで戻ることをいう。 後進復帰とも言う。
今日の復習!!
Spring Framework
Javaプラットフォーム向けのオープンソースアプリケーションフレームワーク・・・。
アプリケーションフレームワーク・・・アプリケーションを実装するために使われるクラスやライブラリの集まり
ReflectionUtils
例外処理するためのシンプルなユーティリティークラス。
Invoke
発動させるという意味。メソッドを発動(実行)させる。
@AutoWired
DIコンテナがその変数の型に代入できるクラスを@Componentの付いているクラスから探し出し、インジェクションしてくれる
DI・・・オブジェクト間で依存性のあるコードを実行時に注入するという設計思想
インジェクション・・・注入
pageContext
ページの情報を取ってくるオブジェクト
JSTL
JavaServer Pages Standard Tag Libraryの略。
JSPで利用される標準的なカスタムタグをまとめたもの。
参考サイト データベースの論理削除と物理削除
クロスイデアBlog「論理削除か物理削除か」
Oracle® Database SQL Reference
IT用語辞典 ロールバック
基本情報技術者講座