1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Hibernate Validator vs Integridade do objeto?

Ao utilizar o Hibernate validator da maneira como encontrei(pesquisando na web), quem consome o objeto precisa "lembrar" de verificar a integridade utilizando o framework. Não seria responsabilidade da própria classe do modelo garantir a sua integridade? Faz sentido ter um objeto em estado inconsistente? não seria melhor lançar exceções nos sets/construtores?

Grato.

  • Diego, eu penso exatamente a mesma coisa. Além de ser responsabilidade da classe deixar explícitas (verificar também, por que não?) suas pré-condições e garantir as suas pós-condições para manter-se num estado válido, o Validator polui a classe com anotações.

    Cácio José da Costa Silva   30 de jul de 2013
  • Apesar de "poluir" a classe modelo, ela fica mais intuitiva, basta você abrir a classe e ver um @NotNull que já sabe que sempre aquele campo será origatório.

    ayslanms   30 de jul de 2013
  • Sim, concordo que serve de documentação da característica daquele atributo anotado, porém isso em nada resolve a questão da integridade: o fato de estar anotado com @NotNull não garante que ele NUNCA estará nulo. Um checkNotNull também deixaria explícito que o atributo não pode ser nulo e resolveria o problema do objeto SEMPRE em estado íntegro.

    Cácio José da Costa Silva   31 de jul de 2013
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags hibernate ou faça a sua própria pergunta.