3.2.2.12. Migração para o Hibernate Validator 4
O Hibernate Validator 4.x é uma base de código completamente nova que implementa JSR 303 - Bean Validation. O processo de migração do Validator 3.x para 4.x é bastante simples, mas existem algumas alterações que devem ser realizadas quando migrar seu aplicativo.
Procedimento 3.17. É possível que tenha que executar uma ou mais das seguintes tarefas
Acesse o ValidatorFactory padrão
O JBoss EAP 6 conecta um ValidatorFactory padrão ao contexto JNDI sob o nomejava:comp/ValidatorFactory.Compreenda a validação disparada pelo ciclo de vida
Quando usado em combinação com o Hibernate Core 4, a validação baseada no ciclo de vida é automaticamente habilitada pelo Hibernate Core.- A validação ocorre nas operações
INSERT,UPDATEeDELETEde entidade. - É possível configurar os grupos a serem validados pelo tipo de evento usando as seguintes propriedades:Os valores dessas propriedades são os nomes de classe inteiramente qualificados, separados por vírgula dos grupos a serem validados.
javax.persistence.validation.group.pre-persist,javax.persistence.validation.group.pre-updatejavax.persistence.validation.group.pre-remove.
Os grupos de validação são um novo recurso de especificação Bean Validation. Caso não queira tirar proveito das vantagens desse novo recurso, você não precisa fazer alterações quando migrar para o Hibernate Validator 4. - É possível desativar a validação baseada no ciclo de vida configurando a propriedade
javax.persistence.validation.modecomonone. Outros valores válidos para esta propriedade sãoauto(padrão),callbackeddl.
Configure seu aplicativo para usar validação manual
- Caso queira controlar manualmente a validação, é possível criar um Validator segundo uma das seguintes maneiras:
- Crie uma instância
Validatora partir deValidatorFactoryusando o métodogetValidator(). - Injete as instâncias do Validator em seu EJB, bean CDI ou qualquer outro recurso Java EE injetável.
- É possível usar o
ValidatorContextdevolvido peloValidatorFactory.usingContext()para personalizar a instância do seu Validador. Ao usar esta API, você pode configurar umMessageInterpolator,TraverableResolvereConstraintValidatorFactorypersonalizados. Essas interfaces estão especificadas na especificação Bean Validation e são novas para o Hibernate Validator 4.
Modifique o código para usar as novas restrições do Bean Validation
As novas restrições de validação de nível Bean exigem alterações de código, quando você migra para o Hibernate Validator 4.- Para fazer a atualização para o Hibernate Validator 4, você precisa usar as restrições nos seguintes pacotes:
javax.validation.constraintsorg.hibernate.validator.constraints
- Todas as restrições que existiam no Hibernate Validator 3 continuam disponíveis no Hibernate Validator 4. Para usá-las, é necessário importar a classe especificada e, em alguns casos, alterar o nome ou o tipo de parâmetro de restrição.
Use restrições personalizadas
No Hibernate Validator 3, uma restrição personalizada necessitava de implementar a interfaceorg.hibernate.validator.Validator. No Hibernate Validator 4, é necessário implementar a interfacejavax.validation.ConstraintValidator. Essa interface contém os mesmos métodosinitialize()eisValid()da interface anterior, no entanto, o método de assinatura foi alterado. Além disso, a alteraçãoDDLnão possui mais suporte no Hibernate Validator 4.