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
,UPDATE
eDELETE
de 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-update
javax.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.mode
comonone
. Outros valores válidos para esta propriedade sãoauto
(padrão),callback
eddl
.
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
Validator
a partir deValidatorFactory
usando 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
ValidatorContext
devolvido peloValidatorFactory.usingContext()
para personalizar a instância do seu Validador. Ao usar esta API, você pode configurar umMessageInterpolator
,TraverableResolver
eConstraintValidatorFactory
personalizados. 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.constraints
org.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çãoDDL
não possui mais suporte no Hibernate Validator 4.