Digamos que voce gostaria de validar um dado que o usuario digitou, validar um CPF se o campo e nulo, voce pode fazer no inicio do metodo algo comoif(cliente.cnpj == null, cliente.nome == null){ throw new Exception("Preencha os campos obrigatorios");}Ira funcionar? Sim, ou talvez nao do jeito que voce planejou, e se eu quiser saber se o cnpj tem o tamanho exato, ou se ele e valido, pois podem existir outra dezenas de validacoes para um campo e imagina o trabalho que iria dar colocar todas a validacoes todas as vezes em cada metodo, nao iriamos criar um metodo e sim um monstro.Para simplificar isso foi criado e aprovado o JSR 303 ou Bean validator.Bean validator tambem conhecido como JSR 303 foi uma especificacao aprovada no final de 2009 pela JCP (Java community process) e faz parte do JavaEE 6, segundo a propria especificacao ela faz o seguinte.CUIDADO CONTEUDO ALTAMENTE TEORICOThis JSR defines a metadata model and API for JavaBean validation. The default metadata source is annotations, with the ability to override and extend the meta-data through the use of XML validation descriptors.The validation API developed by this JSR is not intended for use in any one tier or programming model. It is specifically not tied to either the web tier or the persistence tier, and is available for both server-side application programming, as well as rich client Swing application developers. JSR-303 SpecificationTraducao livre feita pelo autorEssa JSR define um modelo de matadados e API para validar o JavaBean. O matadado padrao e a anotacao, tem que a habilidade de sobrescrever e estender o metadado atraves do uso de validacao XML.A API de validacao desenvolvida por essa JRS nao tem a intencao de uso em nenhuma camada ou modelo de programacao. Ela nao esta atrelada a nenhuma camada web ou camada de persistencia, e esta disponivel tanto para aplicacao do lado servidor como para desenvolvedores que utilizam Swing.Agora voce me pergunta otimo mais como eu faco para usar essa tal de jsr 303, quero validar meus campos. Para isso voce nao ira precisar ficar criando validacoes uma a uma, ja existe implementacoes dessa JSR, o mais famoso e utilizado e o Hibernate validator, para utiliza-lo basta baixar o arquivo e utilizar os seguintes jarsHibernate-validator-xxx.jarValidation-api-xxx.jarJboss-logging-xxx.jarCom isso voce ja esta pronto para utilizar o bean validator.Crie uma classe chamada Cliente com os seguintes campos id, nome, email e em cima delas utilizar a anotacao @NotNull @Size @Email todas do pacote.public class Cliente {@NotNull(message="Valor nao pode ser nulo")private Integer id;@Size(min=5, message="Tamanho deve ser maior que 5")@NotNull(message="Nome nao pode ser nulo")private String nome;@Email(message="Email invalido")private String email;//getters and setters}Note que para todas as anotacoes existe um atributo chamado message, que e a mensagem que sera passada caso o campo nao seja validado.Agora vamos criar um cliente console para mostrar a validacao em funcionamento.public class Client { public static void main(String[] args) { //Nome menor que 5, email invalido Cliente cliente = new Cliente(1, "Cris", "adminqwdadmin.com"); ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Set<constraintviolation<Cliente> constraintViolations = validator.validate(cliente); for(ConstraintViolation error : constraintViolations){ System.out.println(error.getMessage()); } }}Retorno no consoleE isso,