CDI ou Pattern Decorator para Validação de Regra de Negócio

Saudações a todos!

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.

Desde já agradeço o apoio.

Não seria o caso de usar Bean Validation?

Opa… muito obrigado pela dica!

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.

Abraço

Talvez você queira algo como feito aqui https://www.caelum.com.br/apostila-java-web/spring-mvc/#11-11-validacao-com-bean-validation. Mas como você está usando JSF, teria que tentar achar exemplo similar.

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.

Muito obrigado pela atenção.

Vou estudar melhor esse material que me passou.

Abraço