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.
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.
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.
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:
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
SoftDeleteRepositorySchritt 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
Schritt 5: Soft-Delete in der Service-Ebene implementieren
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!