Exactly! A idéia é vc sempre transportar DTOs e nunca expor suas entidades (objetos de domínio). Em suma, quase sempre os DTOs tem a mesma estrutura de entidades, mas nem sempre tb. Isso te permite uma maior flexibilidade em transportar dados entre view e services e, também, não expondo seus domínios vc consegue manter a regra de negócio entre eles mais "oculta" para sua view (uma vez q a view só conhece os DTOs).
Agora, como já comentamos, concordamos é mais "chato" e burocrático trabalhar com DTOs, principalmente na hora de vc "converter" para entidades... pensando nisso o Bruno Fuster da DClick postou uma ferramenta bem interessante: http://blog.dclick.com.br/2009/10/22/transfer-object-pattern-annotations/pt/ []s Em 13 de setembro de 2010 10:40, Leonardo Ribeiro <[email protected]>escreveu: > Fala Mário... > > Só uma dúvida cara, usando a abordagem dos DTOs, se eu vou criar um novo > "usuario" por exemplo, no meu código flex eu irei criar um novo DTO usuario > e envia-lo para o server e lá irei fazer a "conversão" em um usuario do > "dominio" e realizar as operações necessárias, correto? > > Obrigado > > 2010/9/8 Leonardo Ribeiro <[email protected]> > > Sim, eu já havia pensado nisso, nos DTOs, mas queria ter a opinião de quem >> já usa ou se deparou com o mesmo problema que o meu aqui agora... >> >> []'s >> >> >> 2010/9/8 Mário Júnior <[email protected]> >> >>> Sim, trabalhoso, mas pensando de forma mais "politicamente correta" seria >>> isso mesmo! >>> >>> Pela conversa - e pela dúvida específica - me parece q vc está expondo >>> diretamente as entidades do seu negócio né? >>> No começo eu tb fazia isso ( >>> http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensource-para-sistemas-web-parte-2-final/#comment-149.. >>> caramba, já tem +2 anos esse meu comentário =P) mas depois com o tempo me >>> conscientizei de q, de fato, não é uma boa prática expor entidades do >>> hibernate, justamente por me deparar com os principios básicos de >>> encapsulamento, code responsability, etc... então adotei o uso de VOs (q hj >>> já aprendi/acostumei a chamá-los de DTOs). São objetos "burros" q >>> simplesmente trafegam dados entre a view e os services, e daí nos services >>> eu transfiro os dados desses DTOs para as entidades, respeitando toda a >>> regra de negócio encapsulado nesses objetos. >>> >>> Enfim, como comentei antes, cada caso é um caso, e todos estão sujeitos a >>> longas análises... pra isso estamos ae :) >>> >>> >>> []s e boa sorte. >>> >>> >>> >>> Em 8 de setembro de 2010 19:07, Leonardo Ribeiro >>> <[email protected]>escreveu: >>> >>> Mário, >>>> >>>> É, realmente pensando bem não seria uma boa já que teria os casts... >>>> Você que já tem experiência em vários projetos java x flex, como resolve >>>> o problema do encapsulamento, tendo como exemplo o simples objeto >>>> NotaFiscal >>>> que tem como atributo Itens ? >>>> >>>> Sendo que em NotaFiscal não tem um método setItens(List itens) mas sim, >>>> por exemplo, addItem(Item item), porque a nota que deve controlar seus >>>> itens, fazendo se necessário alguma validação no item passado como >>>> parâmetro >>>> no método addItem(Item item)? >>>> >>>> Usa VO? Nesse caso teria que sempre que ler do BD que retorna objetos do >>>> domínio, fazer a criação do VO correspondente e enviar para o Flex e quando >>>> receber do Flex o VO fazer o inverso para poder trabalhar no server com o >>>> objeto de domínio correspondente... isso? Trabalhoso né? hehe >>>> >>>> Obrigado pela atenção >>>> >>>> >>>> 2010/9/8 Mário Júnior <[email protected]> >>>> >>>> É possível sim. >>>>> Abra o source da classe JavaAdapter. Nessa classe vc tem o método >>>>> invoke(Message message). >>>>> >>>>> Dentro de message (faça um cast para RemotingMessage) vc tem tudo oq >>>>> precisa saber (qual classe de serviço será chamada e qual o objeto de >>>>> transporte será passado como argumento, assim como qual é o seu homonimo >>>>> no >>>>> java, etc...). >>>>> >>>>> Agora, precisa ter um bom cuidado com isso, pois ao meu ver, vc estaria >>>>> envolvendo uma certa "regra de negócio" dentro desse adapter. Não digo >>>>> que é >>>>> errado (não sou extremista) mas fique ciente q a medida q o seu projeto >>>>> for >>>>> crescendo (e as regras aumentando) vc vai ter sempre q fazer "testes" no >>>>> objeto tranportado para saber se é um tipo X ou tipo Y para daí então >>>>> decidir qual método chamar (ou deixar de chamar), etc... >>>>> >>>>> Daí fica a pergunta: Não seria melhor fazer esses testes na sua camada >>>>> de serviços, em vez de fazer na camada de comunicação? >>>>> >>>>> ps: cada "caso" é um caso... :) >>>>> >>>>> >>>>> []s >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> Em 8 de setembro de 2010 15:31, Leonardo Ribeiro < >>>>> [email protected]> escreveu: >>>>> >>>>>> Pessoal, >>>>>> >>>>>> Alguém que já tenha mexido no fonte do BlazeDS sabe se é possível >>>>>> fazer com que ele, ao invés de fazer a "criação/injeção" dos valores do >>>>>> objeto as3 -> java via setters publicos usar reflection? >>>>>> >>>>>> Porque isso? Porque daí eu não precisaria de setID por exemplo, que >>>>>> seria a "pk" do objeto, uma vez que essa "pk" seria criada no construtor >>>>>> do >>>>>> objeto e não tem sentido alterar. Outro caso seria de no objeto java ter >>>>>> uma >>>>>> coleção como atributo (típico caso de nota fiscal ter uma coleção de >>>>>> itens) >>>>>> com isso não precisaria ter um setItens(List itens) no objeto >>>>>> NotaFiscal.java, e sim um addItem(Item item), mantendo o encapsulamento, >>>>>> pois quem deve inserir/gerir os itens da nota é a nota. >>>>>> >>>>>> >>>>>> -- >>>>>> []'s >>>>>> Leonardo >>>>>> >>>>>> Linux User #488650 >>>>>> Ubuntu User #27045 >>>>>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece >>>>>> >>>>>> -- >>>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>>>>> Para enviar uma mensagem, envie um e-mail para >>>>>> [email protected] >>>>>> Para sair da lista, envie um email em branco para >>>>>> [email protected] >>>>>> Mais opções estão disponíveis em >>>>>> http://groups.google.com/group/flexdev >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Mario Junior >>>>> http://blog.mariojunior.com/ >>>>> @mariojunior >>>>> >>>>> -- >>>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>>>> Para enviar uma mensagem, envie um e-mail para >>>>> [email protected] >>>>> Para sair da lista, envie um email em branco para >>>>> [email protected] >>>>> Mais opções estão disponíveis em >>>>> http://groups.google.com/group/flexdev >>>> >>>> >>>> >>>> >>>> -- >>>> []'s >>>> Leonardo >>>> >>>> Linux User #488650 >>>> Ubuntu User #27045 >>>> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece >>>> >>>> -- >>>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>>> Para enviar uma mensagem, envie um e-mail para [email protected] >>>> Para sair da lista, envie um email em branco para >>>> [email protected] >>>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >>>> >>> >>> >>> >>> -- >>> Mario Junior >>> http://blog.mariojunior.com/ >>> @mariojunior >>> >>> -- >>> Você recebeu esta mensagem porque está inscrito na lista "flexdev" >>> Para enviar uma mensagem, envie um e-mail para [email protected] >>> Para sair da lista, envie um email em branco para >>> [email protected] >>> Mais opções estão disponíveis em http://groups.google.com/group/flexdev >>> >> >> >> >> -- >> []'s >> Leonardo >> >> Linux User #488650 >> Ubuntu User #27045 >> Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece >> > > > > -- > []'s > Leonardo > > Linux User #488650 > Ubuntu User #27045 > Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece > > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para [email protected] > Para sair da lista, envie um email em branco para > [email protected] > Mais opções estão disponíveis em http://groups.google.com/group/flexdev > -- Mario Junior http://blog.mariojunior.com/ @mariojunior -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [email protected] Mais opções estão disponíveis em http://groups.google.com/group/flexdev
