Bean Validation consultando banco de dados

Olá!

Meu aplicativo tem muitas (mas muitas mesmo, rs) regras de validação. Principalmente nas operações de inclusão e alteração. Pude implementar algumas delas diretamente com anotações de validação do javax.validation.constraints, por exemplo: @NotNull, @Size, etc.

Agora estou chegando num ponto aonde as validações se tornam mais complexas, dependendo de outras consultas ao banco para checar se o dado é válido. Exemplo: restrições unique (dois usuários não podem escolher o mesmo nome de usuário), ou usuários não podem ter uma idade menor do que a escolhida em um parâmetro.

Sei que é possível criar anotações customizadas para validações, minha pergunta é se é possível incluir essas regras mais complexas, se é uma boa prática, e finalmente, como fazê-lo.

Obrigado!!!

Acabei achando alguns posts sobre como colocar essas validações dentro de <f:validators>, mas nada específico sobre validation beans… Alguém tem algo a compartilhar?

Abs!