Livro Vraptor 3 - Dúvida e Ajuda

17 views
Skip to first unread message

Jonas Nepomuceno

unread,
Apr 24, 2014, 4:00:54 PM4/24/14
to caelum-...@googlegroups.com

   Em relação ao livro eu tenho a seguinte dúvida meu amigo Lucas.


   Vir que vc adotou o DDD no seu exemplo vraptor do livro, eu o distribuiria da seguinte forma em pacotes


   br.caelum.controlador

       LivrosConntrolador

   br.caelum.repositorio

     Estante

     LivroDao

   br.caelum.logica

     EstanteNoBancoDeDados

     JPAlivroDao

     LivroValidator.


 

    Estou montando um novo projeto e estou tentando estruturar melhor minha infra de pacotes com suas classes , não quero adotar exatamente

   o modelo DDD pois embora seja bom ainda não domino, gostaria   do montar uma infra dos pacotes e separar responsabilidade, pois hoje minha

   lógica de negócio muito dela e feito no controlador inclusive validação.


   Pensei em algo assim.


   br.caelum.controlador

       LivrosControlador

   br.caelum.repositorio

       EstanteRepositorio ***

      LivroDaoRepositorio ***

   br.caelum.logica

   EstanteLogica ***

      JPAlivroDao

      LivroValidator ***



Os *** onde quero fazer mudanças.


01 – Lucas , não adoto os nomes sugestivos do DDD, mas vamos lá, tipo na minha Interfece EstanteRepositorio que é implementada pelo EstanteLogica eu

SÓ DEVO colocar nela aquilo que está relacionado a coisa como (grava,busca, editar) em banco ou em um sistema de arquivos, ou nessa

EstanteRepositorio pode ter método para realizar outras operações(lógica) como a validação de livro por exemplo que você criou uma classe só para isso.


Na minha estrutura hoje tenho a distribuição da seguinte forma


controlador – faz seu papel, mas além disso faz lógica, validação

dao – classe para trabalha com banco

modelo – meus beans


Estou tentando incluir uma nova camada com logica para fazer o trabalha sujo


Lucas Cavalcanti

unread,
Apr 24, 2014, 10:48:03 PM4/24/14
to caelum-vraptor
Olá,

na minha opinião, o repositório/lógica já deveria receber objetos válidos, assim eles ficam bem menos complexos, sem precisar ficar lidando com casos não esperados.

a validação deveria ficar só no controller, que teria o papel de receber os dados do cliente, validar e passar os objetos para alguma classe executar.
Se a lógica for muito simples o próprio controller poderia fazer. Se for complicada, delega para outra classe.

a validação de dados (null, não null, maior que zero, etc) ficaria no próprio modelo (bean validations) e a validação de negócios (já existe no banco, só pode ser feito em dias úteis, etc) podem ser feitos no próprio modelo ou em classes especializadas. Mas não faria no repositório.

Enfim, são opiniões, dependem muito do tipo de problema que vc tá resolvendo.


--
You received this message because you are subscribed to the Google Groups "caelum-vraptor" group.
To unsubscribe from this group and stop receiving emails from it, send an email to caelum-vrapto...@googlegroups.com.
To post to this group, send email to caelum-...@googlegroups.com.
Visit this group at http://groups.google.com/group/caelum-vraptor.
For more options, visit https://groups.google.com/d/optout.

Jonas Nepomuceno

unread,
Apr 25, 2014, 12:03:01 PM4/25/14
to caelum-...@googlegroups.com

//-

e a validação de negócios (já existe no banco, só pode ser feito em dias úteis, etc) podem ser feitos no próprio modelo ou em classes especializadas. Mas não faria no repositório.

Na frase acima quando você fala validações de negócios tipo (já existe no banco, só pode ser feito em dias úteis, etc) onde o sistema tem busca inf no
banco você faria no modelo ou no um classe especializada.

Me diz uma coisa a classe especializada seria no caso do exemplo do livro : LivroValidetor, uma classe só para fazer isso, ou vc faria no modelo! o que seria
esse modelo ? quando vc fala de modelo aqui vc tá se referindo ao que exatamente ?

--
São Paulo Realmente é aquilo que

Jonas Nepomuceno

unread,
Apr 25, 2014, 12:23:53 PM4/25/14
to caelum-...@googlegroups.com
Já entendir segundo o que tá no próprio livro

De um modo geral, prefira controllers com menos código, focados em controlar
a requisição, e mantenha lógicas de negócio em componentes especializados, ou nos
próprios modelos (como no Livro ou na Estante ).
Reply all
Reply to author
Forward
0 new messages