Heim > Java > javaLernprogramm > Soft-Delete in Spring WebFlux mit RC implementieren

Soft-Delete in Spring WebFlux mit RC implementieren

Susan Sarandon
Freigeben: 2024-11-17 09:54:03
Original
1070 Leute haben es durchsucht

Implementing Soft Delete in Spring WebFlux with RC

Datenmanagement ist eine grundlegende Komponente in der Softwareentwicklung, insbesondere beim Umgang mit Datensätzen, die aus der aktiven Nutzung entfernt werden müssen. Anstatt Datensätze dauerhaft zu löschen (eine Methode, die als „hartes Löschen“ bezeichnet wird), verwenden viele Anwendungen eine Technik namens „weiches Löschen“. Der „Soft-Delete“-Ansatz ist eine weit verbreitete Lösung, die Datensätze als inaktiv markiert, ohne sie dauerhaft zu entfernen, und so eine einfache Datenwiederherstellung und Verlaufsverfolgung ermöglicht.

Im Gegensatz zu Spring Data JPA und Hibernate bietet Spring Data R2DBC derzeit keine integrierten Anmerkungen für die automatische Handhabung von Soft-Delete. Daher greifen Entwickler auf die Verwendung benutzerdefinierter Repository-Implementierungen oder Abfragen zurück, um ähnliche Funktionen zu erreichen.

In diesem Artikel untersuchen wir das vorläufige Löschen, seine Vorteile und wie man es in einer Spring WebFlux-Anwendung mit R2DBC implementiert.

Was ist Soft-Delete?

Vorläufiges Löschen ist eine Datenverwaltungsmethode, bei der Datensätze als inaktiv oder „gelöscht“ gekennzeichnet werden, ohne aus der Datenbank entfernt zu werden. Typischerweise umfasst dies das Hinzufügen eines Felds zur Entität, z. B. „deleded“ (ein boolescher Wert) oder „deledDate“ (ein Zeitstempel), um anzugeben, dass ein Datensatz nicht mehr aktiv ist. Anstatt Daten dauerhaft zu löschen, markiert ein vorläufiges Löschen den Datensatz als logisch gelöscht und verbirgt ihn vor Standardabfragen, während er für eine mögliche Wiederherstellung oder Prüfung erhalten bleibt.

Vorteile von Soft-Delete

  1. Datenwiederherstellung: Vorläufiges Löschen ermöglicht eine einfache Wiederherstellung von Daten. Wenn ein Datensatz versehentlich gelöscht wird, kann er durch Zurücksetzen der Markierung schnell „wiederhergestellt“ werden, um sicherzustellen, dass keine Daten dauerhaft verloren gehen.
  2. Historische Daten: Vorläufiges Löschen bietet einen Prüfpfad. Organisationen müssen häufig historische Daten für Compliance- oder Berichtszwecke aufbewahren, und Soft-Delete ermöglicht dies, ohne dass aktive Daten überfüllt werden.
  3. Datenintegrität: In Systemen mit komplexen Beziehungen kann das dauerhafte Löschen eines Datensatzes zu fehlerhaften Links und Dateninkonsistenzen führen. Durch sanftes Löschen wird dieses Problem behoben, indem die zugehörigen Daten intakt bleiben und die gelöschten Datensätze gleichzeitig als inaktiv markiert werden.
  4. Sicherheit und Compliance: Vorschriften erfordern häufig die Aufbewahrung von Daten für bestimmte Zeiträume. Mithilfe der sanften Löschung können Entwickler diese Compliance-Anforderungen erfüllen, ohne die Daten regulären Benutzern zur Verfügung zu stellen.

So implementieren Sie Soft Delete mit Spring Reactive und R2DBC

Wenn Sie daran interessiert sind, dies selbst zu implementieren, habe ich einen Startercode vorbereitet – eine einfache Blog-Anwendung mit grundlegenden CRUD-Endpunkten und Unit-Testfällen. Über diesen Link können Sie in meinem GitHub-Repository auf den Startercode zugreifen. Also, lasst uns gleich loslegen.

Schritt 1: Fügen Sie ein Feld hinzu, um Datensätze als gelöscht zu markieren

Um dies zu implementieren, fügen Sie Ihrer Entitätsklasse ein Feld hinzu, das den Löschstatus darstellt. Ein effektiverer Ansatz besteht darin, eine abstrakte Klasse (AbstractSoftDeletableEntity) zu erstellen, das Löschstatusfeld darin zu definieren und diese abstrakte Klasse durch Ihre Entitätsklasse erweitern zu lassen. Dieses Feld könnte entweder ein boolescher Wert (deleted) sein, der angibt, ob der Datensatz gelöscht wurde, oder ein Zeitstempel (deletedDate), der angibt, wann er gelöscht wurde. Ich empfehle die Verwendung eines Zeitstempels, da dieser zusätzliche Details darüber liefert, wann die Löschung stattgefunden hat:

Schritt 2: Ändern Sie die Entitätsklasse, um die abstrakte Klasse zu erweitern

Durch die Änderung der Entitätsklasse zur Erweiterung von AbstractSoftDeletableEntity

wird eine Ebene der Abstraktion und Trennung von Belangen geschaffen, wodurch das Single-Responsibility-Prinzip des objektorientierten Designs eingehalten wird.

Schritt 3: Erstellen Sie ein generisches benutzerdefiniertes Repository, das das SimpleR2dbcRepository erweitert Viele Ressourcen zur Implementierung von Soft-Delete empfehlen die Verwendung eines benutzerdefinierten Repositorys für jede Entität, was umständlich und schwierig zu verwalten sein kann, wenn eine Anwendung über zahlreiche Entitäten verfügt. Ein besserer Ansatz besteht darin, eine generische Repository-Schnittstelle zu verwenden und gleichzeitig benutzerdefinierte Implementierungen für die grundlegenden Methoden wie counts, deleteById, deleteAll,

findById und andere.

Im obigen Snippet habe ich das SoftDeleteRepositoryImpl, das die

SoftDeleteRepository
-Schnittstelle implementiert, die eine weitere Abstraktionsebene bereitstellt, indem sie abstrakte Methoden auflistet, die für Soft-Delete-Vorgänge erweitert wurden.

Schritt 4: Ändern des Entitäts-Repositorys zur Erweiterung der benutzerdefinierten Repository-Schnittstelle Ändern Sie abschließend die Haupt-Repository-Schnittstelle, indem Sie das SoftDeleteRepository erweitern und den Entitätsklassennamen und den ID-Datentyp als generische Typargumente angeben. Es stellt außerdem eine Standardimplementierung für die Methoden findById, findAll, deleteById und deleteAll

bereit, um die benutzerdefinierten Soft-Delete-Implementierungen zu nutzen definiert in der
SoftDeleteRepository
-Schnittstelle.

Schritt 5: Soft-Delete in der Service-Ebene implementieren

Sobald Sie die oben genannten Schritte ausgeführt haben, sind Sie startklar. Auf der Domänendienstebene ist keine weitere Implementierung erforderlich. Bemerkenswert ist, dass sowohl die Controller- als auch die Unit-Testfälle keine Änderungen erforderten.
<script></script>Um alle Datensätze (einschließlich gelöschter Datensätze) oder gelöschte Datensätze abzurufen, können Sie die im folgenden Snippet gezeigten Abfragemethoden verwenden:<script></script> <script></script> <script></script> <script></script>

Abschluss

Vorläufiges Löschen ist eine effektive und flexible Methode zum Verwalten von Daten, ohne sie dauerhaft zu löschen. Daher eignet es sich ideal für Anwendungen, die Datenwiederherstellung, Compliance oder die Nachverfolgung historischer Daten benötigen. In diesem Leitfaden haben wir besprochen, was Soft-Delete ist, welche Vorteile es hat und wie es in einer Spring WebFlux-Anwendung mit R2DBC implementiert werden kann.

Den vollständigen Quellcode finden Sie auf GitHub

Das obige ist der detaillierte Inhalt vonSoft-Delete in Spring WebFlux mit RC implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage