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

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: guia completo sobre bibliotecas e ferramentas



A validação de dados é um dos principais aspectos do desenvolvimento de aplicações Java confiáveis. Sem ela, é impossível garantir a correção dos dados de entrada, proteção contra entrada incorreta do usuário ou erros de integração com sistemas externos. Neste artigo, vamos explorar as principais bibliotecas e abordagens para validação de dados em Java, desde o padrão Bean Validation até soluções modernas.



Por que a validação é necessária?

A validação permite:

  • Filtrar dados incorretos em estágio inicial
  • Reduzir o número de erros na lógica de negócios
  • Aumentar a segurança da aplicação (proteção contra SQL injection, XSS)
  • Melhorar a experiência do usuário (mensagens de erro claras)


1. Jakarta Bean Validation (anteriormente JSR 380)

Este é o padrão Java para validação de objetos usando anotações. A implementação principal é o Hibernate Validator. Suportado a partir do Jakarta EE 9 e Java SE 8+.



Anotações principais

  • @NotNull — o valor não pode ser null
  • @NotEmpty — string, coleção ou array não podem estar vazios
  • @Size(min, max) — limitação do comprimento da string ou tamanho da coleção
  • @Pattern(regexp) — verificação por expressão regular
  • @Email — endereço de email válido
  • @Min / @Max — limites numéricos


Exemplo de uso

import jakarta.validation.constraints.*;

public class User { @NotNull(message = "O nome não pode ser null") @Size(min = 2, max = 50, message = "O nome deve conter de 2 a 50 caracteres") private String name;

@Email(message = "Formato de email inválido") @NotEmpty(message = "Email é obrigatório") private String email;

@Min(value = 18, message = "A idade deve ser no mínimo 18") @Max(value = 120, message = "A idade não pode exceder 120") private int age;

// getters e setters}


Executando 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("A"); // nome muito curto user.setEmail("invalid-email"); user.setAge(15); // menor que 18

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


2. Hibernate Validator — implementação estendida

Hibernate Validator é a implementação de referência do Bean Validation. Adiciona recursos adicionais:

  • Anotações de validação personalizadas
  • Grupos de validação (para diferentes cenários)
  • Suporte a @ScriptAssert para verificações complexas


Exemplo de anotação personalizada

import jakarta.validation.*;import java.lang.annotation.*;

@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = PasswordValidator.class)public @interface ValidPassword { String message() default "A senha deve conter letras e números"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {};}


public class PasswordValidator implements ConstraintValidator<ValidPassword, String> {    @Override    public boolean isValid(String value, ConstraintValidatorContext context) {        if (value == null) return false;        return value.matc                    

Recommendations