論理削除とrollbackの話

今日のまとめ

論理削除と物理削除

物理削除はDELETE文を使って物理的にデータを削除してしまうことです。データベースから完全にレコードを削除してしまって、簡単には復元することはできません。(バックアップデータから復元しなければいけない)
対して論理削除は、間違って消してしまっても簡単に復元できます。データベースにフラグとなるフィールドを用意しておいて、削除するときに削除フラグを立てることで、表示時にそのデータを見せなくする方法です。UPDATE文を使います。
こんなときに論理削除を使います。

  • ユーザーからはデータがないように見せたいけど、実際のデータは消したくないとき

  • "削除した"データを検索したい

  • 誤った操作をしたとき、すぐに元に戻したいとき

削除フラグ・・・「削除したものとして扱いますよ」というフラグ

rollback

トランザクションで行われた作業を元に戻すためのメソッドです。現在のトランザクションを終了して、保留中の変更をすべてデータベースにロールバックします。

7ちゃんの例 f:id:marikooota:20160426233521p:plain

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用語辞典 ロールバック
基本情報技術者講座