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
