Sou iniciante com as tecnologias Java e fiquei em duvida de qual seria a melhor estratégia para a solução do meu problema:
Estou usando JSF e JPA e tenho uma estrutura de casse Genérica DAO comum. Contudo, eu gostaria de extender esse DAO e incluir uma classe de Validação auxiliar que deve ser chamada toda vez que for feita uma operação de Insert, Update ou Delete. Essa classe de validação, caso não exista, não fará diferença alguma para a estrutura, mas caso exista ela será responsável por validar as regras de negócio do meu objeto antes de ser persistido.
Até onde vi, acredito que o Decorator seria a melhor opção, mas aparentemente o CDI também faz o trabalho de forma mais simples.
Não conhecia o Bean Validation, mas será muito útil.
Entretanto ainda não é isso que estou procurando, pelo visto o Bean Validation seria utilizado em situações individualizadas mas com usos em diversos lugares.
Mas ainda não é isso que estou procurando, o que procuro é fazer um estrutura padronizada que me permita ao Incluir, Alterar ou Excluir um registro, que possa ser feito apenas por métodos “Salvar” ou “Excluir” e, esse métodos, invoquem automaticamente um método de Validação que o desenvolvedor fará uso de Bean Validation ou os Anotations do próprio Entity para valdiar o input dos dados e permitir ou não a continuidade da operação.
“O que” fazer está claro, o como é que tá me atasanando.
A “estrutura padrão” para persistir é você quem implementa, que pelo jeito você está seguindo DAO. Dentro do método Salvar e Excluir da classe DAO genérica, se .hasErrors() do BindingResult retornar true, você não deixa prosseguir a gravação.