La gestion des données est un élément fondamental du développement de logiciels, en particulier lors de la gestion d'enregistrements qui doivent être supprimés de l'utilisation active. Au lieu de supprimer définitivement des enregistrements (une méthode connue sous le nom de « suppression définitive »), de nombreuses applications utilisent une technique appelée « suppression logicielle ». L'approche de « suppression logicielle » est une solution largement utilisée qui marque les enregistrements comme inactifs sans les supprimer définitivement, permettant ainsi une récupération facile des données et un suivi historique.
Actuellement, contrairement à Spring Data JPA et Hibernate, Spring Data R2DBC n'offre pas d'annotations intégrées pour gérer automatiquement la suppression logicielle. En conséquence, les développeurs ont recours à des implémentations ou à des requêtes de référentiel personnalisées pour obtenir des fonctionnalités similaires.
Dans cet article, nous examinerons la suppression logicielle, ses avantages et comment l'implémenter dans une application Spring WebFlux avec R2DBC.
La suppression logicielle est une méthode de gestion des données dans laquelle les enregistrements sont marqués comme inactifs ou « supprimés » sans être supprimés de la base de données. Généralement, cela implique l'ajout d'un champ à l'entité, comme delete (un booléen) ou deleteDate (un horodatage), pour indiquer qu'un enregistrement n'est plus actif. Au lieu de supprimer définitivement les données, une suppression logicielle marque l'enregistrement comme logiquement supprimé, le masquant des requêtes standard tout en le préservant pour une récupération ou un audit potentiel.
Si vous souhaitez l'implémenter vous-même, j'ai préparé un code de démarrage : une application de blog simple avec des points de terminaison CRUD de base et des cas de tests unitaires. Vous pouvez accéder au code de démarrage depuis mon référentiel GitHub en utilisant ce lien. Alors allons droit au but.
Pour implémenter cela, ajoutez un champ dans votre classe d'entité pour représenter l'état de suppression. Une approche plus efficace consiste à créer une classe abstraite (AbstractSoftDeletableEntity), à y définir le champ d'état de suppression et à demander à votre classe d'entité d'étendre cette classe abstraite. Ce champ peut être soit un booléen (supprimé) indiquant si l'enregistrement est supprimé, soit un horodatage (deletedDate) pour spécifier quand il a été supprimé. Je recommande d'utiliser un horodatage, car il fournit des détails supplémentaires sur le moment où la suppression a eu lieu :
Modifier la classe d'entité pour étendre AbstractSoftDeletableEntity
crée un niveau d'abstraction et de séparation des préoccupations, adhérant ainsi au principe de responsabilité unique de la conception orientée objet.Étape 3 : Créer un référentiel personnalisé générique étendant le SimpleR2dbcRepository De nombreuses ressources sur la mise en œuvre de la suppression logicielle recommandent d'utiliser un référentiel personnalisé pour chaque entité, ce qui peut être fastidieux et difficile à gérer lorsqu'une application comporte de nombreuses entités. Une meilleure approche consiste à utiliser une interface de référentiel générique tout en fournissant des implémentations personnalisées pour les méthodes de base telles que counts, deleteById, deleteAll,
findByIdDans l'extrait ci-dessus, j'ai le SoftDeleteRepositoryImpl
implémentant l'interfaceÉtape 4 : Modification du référentiel d'entités pour étendre l'interface du référentiel personnalisé Enfin, modifiez l'interface principale du référentiel en étendant le SoftDeleteRepository et en fournissant le nom de la classe d'entité et le type de données id comme arguments de type générique. Il fournit également une implémentation par défaut pour les méthodes findById, findAll, deleteById et
deleteAll
Étape 5 : implémenter la suppression logicielle dans la couche de service
La suppression logicielle est une méthode efficace et flexible pour gérer les données sans les supprimer définitivement, ce qui la rend idéale pour les applications nécessitant une récupération de données, une conformité ou un suivi des données historiques. Dans ce guide, nous avons expliqué ce qu'est la suppression logicielle, ses avantages et comment elle peut être implémentée dans une application Spring WebFlux avec R2DBC.
Vous pouvez trouver le code source complet sur GitHub
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!