Validação de dados em Java: visão geral de bibliotecas e ferramentas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Validação de dados em Java: visão geral das principais bibliotecas e ferramentas



A validação de dados é uma das etapas mais importantes no desenvolvimento de qualquer aplicação. Dados incorretos ou maliciosos que entram no sistema podem levar a erros, vulnerabilidades e perda de dados. Em Java, existem várias bibliotecas poderosas que ajudam a automatizar e padronizar esse processo. Neste artigo, veremos as principais ferramentas de validação, suas características e exemplos de uso.



1. Jakarta Bean Validation (anteriormente JSR 380 / Bean Validation 2.0)



Este é o padrão de facto para validação de objetos Java. Ele define um conjunto de anotações que podem ser colocadas em campos, métodos e classes. A implementação mais popular é o Hibernate Validator.



Anotações principais:

  • @NotNull — verifica se o valor não é nulo.
  • @NotEmpty — para strings, coleções ou arrays: não nulo e não vazio.
  • @NotBlank — string não nula e contém pelo menos um caractere não espaço.
  • @Size(min, max) — limita o comprimento da string ou o tamanho da coleção.
  • @Min / @Max — limites numéricos.
  • @Pattern(regexp) — verificação por expressão regular.
  • @Email — verificação do formato de email.


Exemplo de uso:

import jakarta.validation.constraints.*;

public class User { @NotBlank(message = "O nome não pode estar vazio") private String name;

@Email(message = "Email inválido") @NotBlank private String email;

@Min(18) @Max(120) private int age;

// getters e setters}


Como executar a validação:

import jakarta.validation.*;import java.util.Set;

public class ValidationExample { public static void main(String[] args) { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator();

User user = new User(); user.setName(""); // nome vazio user.setEmail("invalid"); user.setAge(150);

Set<ConstraintViolation<User>> violations = validator.validate(user); for (ConstraintViolation<User> v : violations) { System.out.println(v.getPropertyPath() + ": " + v.getMessage()); } }}


Vantagens: abordagem padronizada, integração com Spring e Jakarta EE, suporte a anotações personalizadas.



2. Apache Commons Validator



Biblioteca da Apache que fornece um conjunto de validadores prontos para tipos de dados comuns: email, URL, cartões de crédito, endereços IP, etc. Ao contrário do Bean Validation, não há anotações aqui — a validação ocorre através da chamada de métodos estáticos.



Exemplo:

import org.apache.commons.validator.routines.*;

public class CommonsValidatorExample { public static void main(String[] args) { EmailValidator emailValidator = EmailValidator.getInstance(); System.out.println(emailValidator.isValid("test@example.com")); // true

UrlValidator urlValidator = new UrlValidator(); System.out.println(urlValidator.isValid("https://pythonlib.ru")); // true

CreditCardValidator ccValidator = CreditCardValidator.getInstance(); System.out.println(ccValidator.isValid("4111111111111111")); // true (Visa) }}


Vantagens: integração simples, não requer configuração, adequado para verificações pontuais.



3. OVal (Object Validation Framework)



Biblioteca flexível que suporta tanto anotações quanto configuração programática. Permite definir regras de validação complexas, incluindo validação entre campos e dependências.



Exemplo com anotações:

import net.sf.oval.constraint.*;

public class Order { @NotNull

Recommendations