資料管理是軟體開發中的基本組成部分,特別是在處理需要從活躍使用中刪除的記錄時。許多應用程式使用稱為「軟刪除」的技術,而不是永久刪除記錄(稱為「硬刪除」的方法)。 「軟刪除」方法是一種廣泛使用的解決方案,可將記錄標記為非活動狀態而不永久刪除它們,從而輕鬆實現資料復原和歷史追蹤。
目前,與 Spring Data JPA 和 Hibernate 不同,Spring Data R2DBC 不提供用於自動處理軟刪除的內建註解。因此,開發人員求助於使用自訂儲存庫實作或查詢來實現類似的功能。
在本文中,我們將研究軟刪除、其優點以及如何使用 R2DBC 在 Spring WebFlux 應用程式中實現它。
軟刪除是一種資料管理方法,其中記錄被標記為不活動或“已刪除”,而不從資料庫中刪除。通常,這涉及向實體添加一個字段,例如deleted(布爾值)或deletedDate(時間戳記),以指示記錄不再活動。軟刪除不是永久刪除數據,而是將記錄標記為邏輯刪除,將其隱藏在標準查詢中,同時保留它以供潛在的恢復或審核。
如果您有興趣自己實現這一點,我準備了一個入門程式碼 - 一個帶有基本 CRUD 端點和單元測試案例的簡單部落格應用程式。您可以使用此連結從我的 GitHub 儲存庫存取起始程式碼。那麼,讓我們開始吧。
要實現此目的,請在實體類別中新增一個欄位來表示刪除狀態。更有效的方法是建立一個抽象類別 (AbstractSoftDeletableEntity),在其中定義刪除狀態字段,並讓實體類別擴展此抽象類別。此欄位可以是指示記錄是否已刪除的布林值(已刪除),也可以是指示刪除時間的時間戳記(deletedDate)。我建議使用時間戳,因為它提供了刪除發生時間的附加詳細資訊:
修改實體類別以擴展 AbstractSoftDeletableEntity
建立一定程度的抽象和關注點分離,從而遵守物件導向設計的單一職責原則。步驟 3:建立擴充 SimpleR2dbcRepository 的通用自訂儲存庫 許多有關實現軟體刪除的資源建議為每個實體使用自訂儲存庫,當應用程式具有大量實體時,這可能會很麻煩且難以管理。更好的方法是使用通用儲存庫接口,同時為基本方法提供自訂實現,例如counts、deleteById、deleteAll、
findById在上面的程式碼片段中,我有 SoftDeleteRepositoryImpl
實作了步驟 4:修改實體儲存庫以擴充自訂儲存庫介面 最後,透過擴充 SoftDeleteRepository 並提供實體類別名稱和 id 資料類型作為泛型類型參數來修改主儲存庫介面。它也為findById、findAll、deleteById 和
deleteAll
第 5 步:在服務層實施軟刪除
軟刪除是一種有效且靈活的數據管理方法,無需永久刪除數據,非常適合需要數據恢復、合規性或歷史數據追蹤的應用程式。在本指南中,我們討論了軟刪除是什麼、它的優點以及如何使用 R2DBC 在 Spring WebFlux 應用程式中實現它。
您可以在 GitHub 上找到完整的原始碼
以上是使用 RC 在 Spring WebFlux 中實現軟刪除的詳細內容。更多資訊請關注PHP中文網其他相關文章!