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

Responder a