Validar os valores preenchidos em campos de entrada de dados é extremamente importante em aplicações. O procedimento evita que armazenemos sujeira em nossas bases de dados e, dependendo do caso, pode até mesmo ter impacto na segurança do sistema. Um dos mecanismos que podemos utilizar para realizar esta verificação surgiu com a liberação da plataforma Java EE 6, na qual foi introduzida a especificação Bean Validation 1.0. O objetivo principal da biblioteca foi auxiliar os programadores nesta tarefa, que muitas vezes toma bastante tempo durante o desenvolvimento.
Com o lançamento recente da plataforma Java EE, a JSR 349 foi liberada, introduzindo a versão 1.1 da biblioteca de validação. A atualização da especificação trouxe algumas novidades e entre as principais estão:
- Uso de injeção de dependências e integração com CDI (ver BOX 1);
- 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 de expression language;
- Integração com outras especificações, como JAX-RS (ver BOX 2).
Trata-se de um design pattern que tem como objetivo abstrair de uma classe como um objeto do qual ela é dependente é instanciado. Na plataforma Java EE, o CDI é a especificação oficial que desempenha esta tarefa.
Produto oficial da plataforma Java EE que trata da criação de web services utilizando a arquitetura REST. Baseado em anotações, atualmente encontra-se na versão 2.0 e tem como implementação oficial o Jersey.
O processo de validação é todo baseado em anotações, porém, de forma alternativa, podem ser utilizados arquivos XML na configuração. A grande vantagem da especificação é que ela não está associada a um modelo de programação específico, podendo ser utilizada, por exemplo, em projetos web e desktop. A implementação oficial da especificação é o Hibernate Validator, que atualmente está na versão 5.0.1 e é fornecido pela Red Hat.
Neste artigo, veremos uma boa parte dos recursos dessa especificação, através da implementação de um pequeno sistema usandoJSF 2.2 e executado no servidor de aplicação GlassFish 4. Cada exemplo desenvolvido terá ilustrado o contexto em que se aplica e o código envolvido será detalhado para auxiliar na compreensão da API da JSR por parte do desenvolvedor.
O problema
Na maioria das aplicações web, a validação de campos ocorre em diversas camadas (da apresentação à persistência), pois os desenvolvedores têm o hábito de espalhar o código de verificação dos dados fornecidos pelo usuário em várias classes. Este tipo de abordagem traz uma série de problemas. Entre eles, podemos citar:
- Presença de código duplicado por toda a aplicação;
- Desperdício de tempo no desenvolvimento;
- Aumento na probabilidade de ocorrência de erros;
- Ausência de padronização no retorno dado ao usuário.
A Figura 1 mostra este tipo de cenário, em que o código de validação pode ser encontrado em várias camadas do sistema.
... Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais