Validação de dados nas camadas

Olá pessoal, queria saber da opinião de vocês quanto a validação de dados nas camadas.

Cenário Arquitetural:

Modelo - EJB (JPA)
Controle e Visão - JSF

A dúvida é relativa a validação de dados do tipo String.

Baseado nas camadas mostradas acima, é feita uma validação nos campos de texto para que não exceda o tamanho máximo da string no banco de dados (varchar), até aí tudo bem, usa-se as formas disponíveis pelo JSF para fazer essa validação, porém quando esses ejb’s são acessados de outros sistemas por exemplo, que não uma camada de visão, essa validação deverá ser feita na entidade também?

Eu creio que sim, porém daria um bocado de trabalho validar esses atributos do tipo string na visão e no modelo, por outro lado, nos casos em que o acesso aos ejbs partem de outros sistemas, evitaria uma exceção na hora de inserir ou atualizar informações no banco de dados.

Qual a experiência de vocês nesse caso, vale pena escrever mais para validar de uma forma completa?

Ou deixa estourar e exceção no banco e valida somente no jsf?

Sem mais.
Grato.

Alguma opinião?

[quote=spyrogyra]
Olá pessoal, queria saber da opinião de vocês quanto a validação de dados nas camadas.

Baseado nas camadas mostradas acima, é feita uma validação nos campos de texto para que não exceda o tamanho máximo da string no banco de dados (varchar), até aí tudo bem, usa-se as formas disponíveis pelo JSF para fazer essa validação, porém quando esses ejb’s são acessados de outros sistemas por exemplo, que não uma camada de visão, essa validação deverá ser feita na entidade também?

Sem mais.
Grato.[/quote]

Olá, acredito que a validação deverá ser feita no Model sim, já que um objeto tem que ser responsável pela consistência de seus dados, na minha opinião você deveria somente validar no Model lançando exceções com mensagens explicativas quando os dados não são consistentes e exibindo na view, evitando assim duplicar codigo, porque mesmo quando os EJBS sao acessados de outro lugar de sistema, passaria pelo model de qualquer forma.

Valeu

Obrigado pela opinião Daniel :wink:

Pois é, realmente a validação mais importante é a do modelo (pois sempre será acesssada) e a validação na camada de visão torna-se desnecessária nesse caso, simplesmente envia-se mensagens explicativas das exceções lançadas para a camada de visão.

Concordo contigo nesse ponto.

Saudações.

[quote=danielbussade][quote=spyrogyra]
Olá pessoal, queria saber da opinião de vocês quanto a validação de dados nas camadas.

Baseado nas camadas mostradas acima, é feita uma validação nos campos de texto para que não exceda o tamanho máximo da string no banco de dados (varchar), até aí tudo bem, usa-se as formas disponíveis pelo JSF para fazer essa validação, porém quando esses ejb’s são acessados de outros sistemas por exemplo, que não uma camada de visão, essa validação deverá ser feita na entidade também?

Sem mais.
Grato.[/quote]

Olá, acredito que a validação deverá ser feita no Model sim, já que um objeto tem que ser responsável pela consistência de seus dados, na minha opinião você deveria somente validar no Model lançando exceções com mensagens explicativas quando os dados não são consistentes e exibindo na view, evitando assim duplicar codigo, porque mesmo quando os EJBS sao acessados de outro lugar de sistema, passaria pelo model de qualquer forma.

Valeu[/quote]

Concordo com o danielbussade e acrescentando minha opinião, as vezes é necessário TAMBÉM termos validacoes no lado Client por questão de performance, pois uma validação Javascript é bem mais rápida que uma validação tratada no model.

http://guj.com.br/posts/list/103549.java#559182