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
