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

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 de ferramentas e bibliotecas



A validação (verificação de correção) de dados é uma das etapas-chave no desenvolvimento de qualquer aplicação. Sem uma verificação confiável dos dados de entrada, a aplicação se torna vulnerável a erros, comportamento incorreto e ataques. Em Java, existem várias abordagens e bibliotecas comprovadas que permitem implementar a validação de forma rápida, flexível e com o mínimo de código repetitivo.



Neste artigo, abordaremos as principais ferramentas para validação de dados em Java: o padrão Bean Validation (Jakarta Validation), sua implementação mais popular Hibernate Validator, bem como uma alternativa — Apache Commons Validator. Abordaremos também a validação manual para casos simples.



1. Padrão Bean Validation (Jakarta Validation)



Bean Validation (anteriormente JSR 380, agora Jakarta Validation) é uma especificação que define um conjunto de anotações para validação declarativa de objetos Java. A ideia principal: você descreve as regras de verificação diretamente nos campos da classe usando anotações, e o mecanismo de validação as verifica automaticamente.



Anotações principais



  • @NotNull — o valor não deve ser nulo.
  • @NotEmpty — string, coleção ou array não devem estar vazios (e não nulos).
  • @NotBlank — a string não deve estar vazia ou consistir apenas de espaços.
  • @Size(min, max) — limitação do comprimento da string, tamanho da coleção ou array.
  • @Min / @Max — restrições numéricas.
  • @Pattern(regexp = "...") — verificação por expressão regular.
  • @Email — verificação do formato do endereço de e-mail.


Exemplo de uso



import jakarta.validation.constraints.*;

public class User { @NotBlank(message = "O nome não pode estar vazio") @Size(min = 2, max = 50) private String name;

@Email(message = "E-mail inválido") @NotNull private String email;

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

// getters e setters}


Para executar a validação, utiliza-se o objeto Validator:



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"); user.setEmail("email-invalido"); user.setAge(10);

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


2. Hibernate Validator — implementação do padrão



Hibernate Validator é a implementação de referência da especificação Bean Validation. Ela suporta totalmente todas as anotações do Jakarta Validation e adiciona extensões próprias, como @URL, @CreditCardNumber, @ISBN e outras.



Recursos adicionais

  • Validadores personalizados — você pode criar suas próprias anotações e lógica de verificação.
  • Grupos de validação — verificar diferentes conjuntos de regras dependendo do contexto (por exemplo, criação vs atualização).
  • Integração com Spring Boot, Java EE / Jakarta EE pronta para uso.


Exemplo de validador personalizado



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

@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = PhoneValidator.class)public @interface ValidPhone { String message() default "Telefone inválido";

Recommendations