Por que eu devo ler este artigo:Este artigo é útil por apresentar como expressar e validar regras existentes no domínio de negócio de uma aplicação. Para isso, aprenderemos de forma básica e simples os principais conceitos relativos ao Hibernate Validator, fazendo uma análise geral sobre seu funcionamento, como configurar um ambiente de desenvolvimento com Maven, Eclipse, MySQL e Tomcat para uso desta tecnologia e, em seguida, como desenvolver uma aplicação com JSF e o padrão arquitetural MVC que faz uso de seus recursos.

A validação de dados é uma tarefa bastante comum em sistemas onde a entrada de dados é feita principalmente pelo usuário. Em qualquer aplicação, receber dados sempre foi um grande problema, pois não há como prever todas as maneiras que o usuário utilizará para informar seus dados. Por exemplo, caso o campo que receberá uma data não especifique o formato esperado pela aplicação, não há como garantir que o usuário entrará com o dado no formato desejado, o que acaba se tornando um desafio aos programadores.

Diante disso, é necessário realizar o tratamento adequado de todas as informações que são enviadas para evitar que problemas inesperados venham a ocorrer durante o processamento, como exceções que interromperão a execução do sistema, problemas de integridade ou corrupção dos dados e também questões relacionadas à falha de segurança.

Cada informação passada para a aplicação possui um propósito. Assim, é natural que algumas regras sejam introduzidas com o intuito de controlar a interação entre o usuário e o sistema, garantindo deste modo a correta execução das regras de negócio. E com o intuito de garantir o cumprimento dessas regras que o conceito de validação foi implementado. Validar é determinar se os dados capturados pelo sistema seguem as regras lógicas definidas para manter a sua consistência.

Neste contexto, conseguir consolidar e implementar a validação usando uma solução de qualidade como o Hibernate Validator pode melhorar significativamente a confiabilidade do software, especialmente ao longo do tempo, e torná-lo mais amigável ao usuário.

Considerando que as políticas de validação não estruturadas e não controladas vão levar ao aumento dos custos de suporte e manutenção, uma estratégia de validação consolidada pode minimizar significativamente o efeito cascata de mudanças para sua base de código. Além disso, a camada de validação também passa a ser uma ferramenta muito útil durante o processo de depuração, ajudando a localizar defeitos que comprometem o bom funcionamento da aplicação.

Engajado nesta causa, o Hibernate Validator é um projeto open source conduzido pela empresa Red Hat que permite a validação dos dados, presentes nas classes que modelam o domínio da aplicação, em qualquer arquitetura (Web, Desktop, etc.) e em tempo de execução. A motivação para a utilização dessa biblioteca é poder validar os dados diretamente no domínio da aplicação, em vez de realizar esse processo por camadas. Dessa forma, é possível validar campos numéricos, definir se datas informadas serão obrigatoriamente maiores ou menores que a data atual, verificar se o campo pode ser vazio ou não diretamente nas classes de domínio de maneira centralizada e flexível, mantendo o código claro e enxuto.

A partir disso, ao longo desse artigo abordaremos os principais conceitos e características do Hibernate Validator, e veremos como desenvolver um sistema de cadastro de projetos considerando como um dos seus principais requisitos não funcionais a confiabilidade do sistema. Para tanto, serão empregados, além do Validator, a linguagem de programação Java, o ambiente de desenvolvimento Eclipse integrado ao Maven, o sistema de gerenciamento de banco de dados MySQL, o framework JSF e o container web Tomcat. Ademais, o Hibernate será usado como solução integrante da camada de persistência, viabilizando a interface entre a aplicação e o MySQL.

Hibernate Validator

O Hibernate é um framework de mapeamento objeto relacional muito popular entre os desenvolvedores Java. Distribuído sob a licença LGPL, foi criado por Gavin King em 2001, sendo atualmente o framework de persistência de dados mais utilizado. Segundo a documentação oficial: “o Hibernate pretende retirar do desenvolvedor cerca de 95% das tarefas mais comuns de persistência de dados”.

Sua principal característica é a transformação de classes Java em representações de tabelas da base de dados (e dos tipos de dados Java para os da SQL). O Hibernate gera os comandos SQL e libera o desenvolvedor do trabalho manual de transformação, mantendo o programa portável para quaisquer bancos de dados SQL.

O Hibernate Validator, por sua vez, é a implementação de referência da JSR 303 – Bean Validation API. Disponibilizada em dezembro de 2009, a partir da especificação do Java EE 6, na qual foi introduzida a especificação Bean Validation 1.0, o objetivo principal dessa API é permitir a validação dos dados de forma fácil e rápida, através do uso de anotações e, de forma alternativa, utilizando arquivos XML na configuração.

Com o lançamento mais recente da plataforma Java EE, agora na versão 7, a JSR 349 foi divulgada, introduzindo a versão 1.1 da API de validação e trazendo novidades como:

  • Uso de injeção de dependências e integração com CDI;
  • Validação de parâmetros e retornos de métodos;
  • Uso de grupos de conversão;
  • Suporte à concatenação de mensagens de violação através deexpression language;
  • Integração com outras especificações, como JAX-RS.

Antes do surgimento dessa API, cada framework implementava um mecanismo proprietário para validar as informações, o que criava problemas de incompatibilidade e dificultava a integração com outros frameworks.

Com o surgimento dessa especificação, possibilitou-se uma API padrão para validação que é flexível o suficiente para ser utilizada pelos mais diversos tipos de frameworks. Além disso, a Bean Validation API viabiliza a validação de dados nas classes do domínio da aplicação, processo esse que é mais simples do que quando é feito por camada. Na validação por camada, é necessário verificar o mesmo dado diversas vezes (nas camadas de apresentação, negócio, persistência, etc.), a fim de garantir a consistência da informação, conforme mostra a Figura 1. Ao validar os dados diretamente nas classes de domínio, o processo todo fica centralizado, uma vez que os objetos destas classes normalmente trafegam entre as camadas da aplicação.

Validação realizada em várias camadas

Figura 1. Validação realizada em várias camadas. Fonte: Hibernate Validator Reference Guide.

O Hibernate Validator, como principal implementação da Bean Validation API, segue a premissa estabelecida pelo DRY (Don’t Repeat Yourself), que especifica uma forma de adicionar regras e respectivas verificações para validação automática dos dados, de maneira que estas validações sejam implementadas ...

Quer ler esse conteúdo completo? Tenha acesso completo