2005.08.18 · 技術と道具

S2Daoの論理削除関連

論理削除とは

各テーブルに削除フラグを持ち、ビジネスロジック上でのエンティティ削除において、DELETE文を発行せず、削除フラグを真にするUPDATE文を発行することをいう。SELECT文を発行する際には、暗黙的にWHERE句に削除フラグが偽のもののみを取得する条件を付加することで、ビジネスロジック上ではそのエンティティが削除されたものとして扱われる。

論理削除のポイント

  • 削除メソッドを実行したら、削除フラグを真にするUPDATE文が発行される。
  • SELECT文を実行する際に、削除フラグが偽のもののみを取得するようにする。

S2Daoでの対応

機能として用意されていない。 サンプルプロジェクトにおいて、S2DelFlagなるものが配布されているが、これはUPDATE文の対応を可能にするが、SELECT文には関与しない。 よって、独自実装で対応しなければならない。

独自実装の方法:N:1マッピングしない場合

UPDATE対応は、EntityManagerを使用するためのimplクラスで、deleteメソッドが削除フラグを真にしてupdateメソッドを呼ぶようにオーバーライドする。

SELECT対応は、QWERYアノテーションを使うか、implクラスでWHERE句を付ける。

独自実装の方法:N:1マッピングする場合

UPDATE対応は不要。(親子もろとも論理削除することは考えない)

SELECT対応は、S2DaoのN:1マッピングは、1側に対して関連KEY以外の検索条件が指定できないため、1側の削除フラグ対応が出来ない。(逆に、N側には検索条件が指定できるため、削除フラグ対応もN:1マッピングしない場合と同様の方法で、おそらく可能。)

2005/08/18 10:10
← ICF-M260でのFMラジオ受信状況
そろそろケータイの買い替え時期 →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。