Application des contraintes

Nettoyer des données en Java

Dennis Lee

Software Engineer

Contrôle qualité des données

  • Annotations de validation : contrôle qualité des données
  • Erreurs : pays manquant, montants invalides, boîtes négatives expédiées
  • Fautes de frappe : 1000 boîtes au lieu de 100

 

 

Commercial Pays Produit Date Montant Boîtes expédiées
James Rudeforth UK Mint Chip Choco 4-Jan-22 $5320 100
Van Tuxwell India 85% Dark Bars 1-Aug-22 $7896 94
Gigi Bohling US Peanut Butter Cubes 7-Jul-22 $4501 91
Nettoyer des données en Java

Annotations de validation de base

import jakarta.validation.constraints.NotNull;     // Règles pour champs vides
import jakarta.validation.constraints.Size;        // Règles pour la longueur des chaînes

public class ChocolateSale {
    @NotNull(message = "Salesperson cannot be empty")
    private String salesperson;


@NotNull(message = "Country cannot be empty") // Plusieurs règles peuvent être empilées @Size(min = 2, max = 50) // Impose la longueur du nom de pays private String country;
@NotNull(message = "Product cannot be empty") private String product; }
Nettoyer des données en Java

Contraintes numériques

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
// Nous afficherons les messages plus tard
public class ChocolateSale {
    @Min(value = 0, message = "Sales amount must be positive")
    private Double amount;


@Min(value = 1, message = "Must ship at least 1 box") @Max(value = 1000, message = "Cannot ship more than 1000 boxes") private Integer boxesShipped; }
Nettoyer des données en Java

Imports pour appliquer les contraintes

// Stocke les erreurs de validation uniques (pas de doublons)
import java.util.Set;
// Détails d’une erreur (champ, message, etc.)
import jakarta.validation.ConstraintViolation;
// Point d’entrée pour créer des validateurs
import jakarta.validation.Validation;
// Vérifie les données par rapport aux règles
import jakarta.validation.Validator;
// Crée des validateurs configurés
import jakarta.validation.ValidatorFactory;
// Levée quand la validation échoue
import jakarta.validation.ConstraintViolationException;
Nettoyer des données en Java

Implémenter le validateur

class SalesValidator {
    // Outils pour contrôler nos données
    private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

// Obtenir un validateur pour contrôler les ventes private static final Validator validator = factory.getValidator();
public static Set<ConstraintViolation<ChocolateSale>> validateSale(ChocolateSale sale) { // Vérifier l’enregistrement et renvoyer les problèmes trouvés return validator.validate(sale); } }
Nettoyer des données en Java

Gérer les résultats de validation

public class Main {
    public static void main(String[] args) {
        // Créer une vente avec des données invalides (pays nul, montant négatif)
        ChocolateSale sale = new ChocolateSale("James Rudeforth", null, "Mint Chip Choco",
                LocalDate.parse("2022-01-04"), -5320.0, 1500);


// Vérifier les violations de validation Set<ConstraintViolation<ChocolateSale>> violations = SalesValidator.validateSale(sale); // Afficher chaque message d’erreur de validation violations.forEach(violation -> System.out.println(violation.getMessage()));
// En cas de violations, lever une exception if (!violations.isEmpty()) throw new ConstraintViolationException(violations); } }
Nettoyer des données en Java

Sortie de validation

Le pays ne peut pas être vide
Le montant des ventes doit être positif
Impossible d’expédier plus de 1000 boîtes

Exception in thread "main" jakarta.validation.ConstraintViolationException
Nettoyer des données en Java

La validation évite des erreurs coûteuses

  • @NotNull, @Size, @Min et @Max interceptent tôt les erreurs
  • Appliquez la validation à des cas métiers généraux
  • Première barrière contre des erreurs de données coûteuses

Grains de cacao tamisés en usine

Nettoyer des données en Java

Passons à la pratique !

Nettoyer des données en Java

Preparing Video For Download...