Afdwingen van constraints

Data opschonen in Java

Dennis Lee

Software Engineer

Kwaliteitscontrole voor data

  • Validatie-annotaties: kwaliteitscontrole voor data
  • Fouten: ontbrekende landen, ongeldige bedragen, negatief aantal dozen verzonden
  • Typfouten: 1000 dozen i.p.v. 100

 

 

Verkoper Land Product Datum Bedrag Dozen verzonden
James Rudeforth VK Mint Chip Choco 4-jan-22 $5320 100
Van Tuxwell India 85% Dark Bars 1-aug-22 $7896 94
Gigi Bohling VS Peanut Butter Cubes 7-jul-22 $4501 91
Data opschonen in Java

Basisvalidatie-annotaties

import jakarta.validation.constraints.NotNull;     // Regels voor lege velden importeren
import jakarta.validation.constraints.Size;        // Regels voor stringlengte importeren

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


@NotNull(message = "Country cannot be empty") // Meerdere regels stapelen @Size(min = 2, max = 50) // Dwingt lengte landnaam af private String country;
@NotNull(message = "Product cannot be empty") private String product; }
Data opschonen in Java

Numerieke constraints

import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
// We tonen later de meldingen
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; }
Data opschonen in Java

Imports voor afdwingen van constraints

// Slaat unieke validatiefouten op (geen duplicaten)
import java.util.Set;
// Bevat details van één validatiefout (veld, melding, etc.)
import jakarta.validation.ConstraintViolation;
// Instappunt om validators te maken
import jakarta.validation.Validation;
// Controleert data tegen regels
import jakarta.validation.Validator;
// Maakt geconfigureerde validators
import jakarta.validation.ValidatorFactory;
// Gegooid als validatie faalt
import jakarta.validation.ConstraintViolationException;
Data opschonen in Java

Validator implementeren

class SalesValidator {
    // Maak tools om onze data te checken
    private static final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();

// Haal een validator om verkooprecords te controleren private static final Validator validator = factory.getValidator();
public static Set<ConstraintViolation<ChocolateSale>> validateSale(ChocolateSale sale) { // Check verkooprecord en geef gevonden problemen terug return validator.validate(sale); } }
Data opschonen in Java

Validatieresultaten afhandelen

public class Main {
    public static void main(String[] args) {
        // Maak verkoop met ongeldige data (lege country, negatief amount)
        ChocolateSale sale = new ChocolateSale("James Rudeforth", null, "Mint Chip Choco",
                LocalDate.parse("2022-01-04"), -5320.0, 1500);


// Controleer verkoop op validatiefouten Set<ConstraintViolation<ChocolateSale>> violations = SalesValidator.validateSale(sale); // Print elke validatiefoutmelding violations.forEach(violation -> System.out.println(violation.getMessage()));
// Als er fouten zijn, gooi een exceptie if (!violations.isEmpty()) throw new ConstraintViolationException(violations); } }
Data opschonen in Java

Validatie-uitvoer

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

Exception in thread "main" jakarta.validation.ConstraintViolationException
Data opschonen in Java

Validatie voorkomt dure fouten

  • @NotNull, @Size, @Min en @Max vangen fouten vroegtijdig af
  • Pas validatie toe op algemene businessproblemen
  • Eerste verdedigingslinie tegen dure datafouten

Cacaobonen gezeefd in een fabrieksomgeving

Data opschonen in Java

Laten we oefenen!

Data opschonen in Java

Preparing Video For Download...