首頁 > Java > java教程 > 主體

使用 RC 在 Spring WebFlux 中實現軟刪除

Susan Sarandon
發布: 2024-11-17 09:54:03
原創
990 人瀏覽過

Implementing Soft Delete in Spring WebFlux with RC

資料管理是軟體開發中的基本組成部分,特別是在處理需要從活躍使用中刪除的記錄時。許多應用程式使用稱為「軟刪除」的技術,而不是永久刪除記錄(稱為「硬刪除」的方法)。 「軟刪除」方法是一種廣泛使用的解決方案,可將記錄標記為非活動狀態而不永久刪除它們,從而輕鬆實現資料復原和歷史追蹤。

目前,與 Spring Data JPA 和 Hibernate 不同,Spring Data R2DBC 不提供用於自動處理軟刪除的內建註解。因此,開發人員求助於使用自訂儲存庫實作或查詢來實現類似的功能。

在本文中,我們將研究軟刪除、其優點以及如何使用 R2DBC 在 Spring WebFlux 應用程式中實現它。

什麼是軟刪除

軟刪除是一種資料管理方法,其中記錄被標記為不活動或“已刪除”,而不從資料庫中刪除。通常,這涉及向實體添加一個字段,例如deleted(布爾值)或deletedDate(時間戳記),以指示記錄不再活動。軟刪除不是永久刪除數據,而是將記錄標記為邏輯刪除,將其隱藏在標準查詢中,同時保留它以供潛在的恢復或審核。

軟刪除的好處

  1. 資料恢復:軟刪除可以輕鬆恢復資料。如果一筆記錄被意外刪除,可以透過重置標誌來快速“恢復刪除”,確保資料不會永久遺失。
  2. 歷史資料:軟刪除提供稽核追蹤。組織通常需要保留歷史資料以實現合規性或報告目的,而軟刪除可以在不擁擠活動資料的情況下實現這一點。
  3. 資料完整性:在關係複雜的系統中,永久刪除記錄可能會導致連結損壞和資料不一致。軟刪除透過保持相關資料完整,同時將刪除的記錄標記為非活動來解決這個問題。
  4. 安全性和合規性:法規通常要求將資料保留特定期限。軟刪除使開發人員能夠滿足這些合規性需求,而無需向普通用戶提供資料。

如何使用 Spring Reactive 和 R2DBC 實現軟刪除

如果您有興趣自己實現這一點,我準備了一個入門程式碼 - 一個帶有基本 CRUD 端點和單元測試案例的簡單部落格應用程式。您可以使用此連結從我的 GitHub 儲存庫存取起始程式碼。那麼,讓我們開始吧。

步驟 1:新增欄位以將記錄標記為已刪除

要實現此目的,請在實體類別中新增一個欄位來表示刪除狀態。更有效的方法是建立一個抽象類別 (AbstractSoftDeletableEntity),在其中定義刪除狀態字段,並讓實體類別擴展此抽象類別。此欄位可以是指示記錄是否已刪除的布林值(已刪除),也可以是指示刪除時間的時間戳記(deletedDate)。我建議使用時間戳,因為它提供了刪除發生時間的附加詳細資訊:

第二步:修改實體類,擴展抽象類

修改實體類別以擴展 AbstractSoftDeletableEntity

建立一定程度的抽象和關注點分離,從而遵守物件導向設計的單一職責原則。

步驟 3:建立擴充 SimpleR2dbcRepository 的通用自訂儲存庫 許多有關實現軟體刪除的資源建議為每個實體使用自訂儲存庫,當應用程式具有大量實體時,這可能會很麻煩且難以管理。更好的方法是使用通用儲存庫接口,同時為基本方法提供自訂實現,例如countsdeleteByIddeleteAll

findById
以及其他。

在上面的程式碼片段中,我有 SoftDeleteRepositoryImpl

實作了
SoftDeleteRepository
接口,它透過列出針對軟刪除操作增強的抽象方法來提供另一個抽象層。

步驟 4:修改實體儲存庫以擴充自訂儲存庫介面 最後,透過擴充 SoftDeleteRepository 並提供實體類別名稱和 id 資料類型作為泛型類型參數來修改主儲存庫介面。它也為findByIdfindAlldeleteById

deleteAll
方法提供預設實現,以利用軟刪除自訂實作在
SoftDeleteRepository

介面中。

第 5 步:在服務層實施軟刪除
完成上述步驟後,一切都準備好了。領域服務層不需要進一步的實作。值得注意的是,控制器和單元測試案例也不需要修改。 <script></script> <script></script>要取得所有記錄(包括已刪除的記錄)或已刪除的記錄,您可以使用如下程式碼片段所示的查詢方法:<script></script> <script></script> <script></script> <script></script>

結論

軟刪除是一種有效且靈活的數據管理方法,無需永久刪除數據,非常適合需要數據恢復、合規性或歷史數據追蹤的應用程式。在本指南中,我們討論了軟刪除是什麼、它的優點以及如何使用 R2DBC 在 Spring WebFlux 應用程式中實現它。

您可以在 GitHub 上找到完整的原始碼

以上是使用 RC 在 Spring WebFlux 中實現軟刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板