Application des contraintes

Nettoyer des données en Java

Dennis Lee

Software Engineer

Contrôle de qualité des données

  • Annotations de validation : contrôle de qualité des données
  • Erreurs : pays manquants, montants invalides, nombre de boîtes expédiées négatif
  • Coquilles : 1000 boîtes au lieu de 100

 

 

Salesperson Country Product Date Amount Boxes Shipped
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;     // Import des règles pour les champs vides
import jakarta.validation.constraints.Size;        // Import des 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) // Imposera 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 (sans doublons)
import java.util.Set;
// Contient les 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;
// Valide les données selon les règles
import jakarta.validation.Validator;
// Crée des validateurs configurés
import jakarta.validation.ValidatorFactory;
// Lancée quand la validation échoue
import jakarta.validation.ConstraintViolationException;
Nettoyer des données en Java

Mise en œuvre du validateur

class SalesValidator {
    // Crée les outils pour vérifier nos données
    private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

// Obtient un validateur pour vérifier les ventes private static final Validator validator = factory.getValidator();
public static Set<ConstraintViolation<ChocolateSale>> validateSale(ChocolateSale sale) { // Vérifie l'enregistrement et retourne 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ée 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érifie les violations de validation Set<ConstraintViolation<ChocolateSale>> violations = SalesValidator.validateSale(sale); // Affiche chaque message d'erreur de validation violations.forEach(violation -> System.out.println(violation.getMessage()));
// S'il y a des violations, lance une exception if (!violations.isEmpty()) throw new ConstraintViolationException(violations); } }
Nettoyer des données en Java

Sortie de validation

Country cannot be empty
Sales amount must be positive
Cannot ship more than 1000 boxes

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 détectent tôt les erreurs
  • Appliquez ces validations à des problèmes d'affaires généraux
  • Première ligne de défense 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...