Pergentino Araújo escreveu:
Pra mim, o conceito é o seguinte:

VO - Objeto (talvez Entidade) que possui atributos e, claro, vai ser trafegado entre o server e o client. DTO - Objeto multivalorado, que possui vários VO's. Um exemplo prático é o DTO ter um mapa dentro dele e, claro, vai ser também trafegado entre o server e o client.

[]'s


2010/3/1 Mário Júnior <juninho...@gmail.com <mailto:juninho...@gmail.com>>

    Eu uso o termo VO ... na real, tanto faz DTO ou VO.
    Uso para representar objetos que PODEM ou NAO PODEM ter
    identidade, para encapsular dados para transferencia entre client
    e server e representar dados vindo do BD.

    Pra mim, Value Obejct, tem mesmo só q representar valores, nao
    importando se a cotação do sapo na bolsa é relativamente superior
    a flexibilidade do rabo da largatixa =D (putz.. infame.. hehehe)

    []s





    Em 1 de março de 2010 12:47, Fábio <fabi...@gmail.com
    <mailto:fabi...@gmail.com>> escreveu:

        Eu estava acessando agora um tutorial do Swiz e é usado o
        termo DTO:

        
http://www.webappsolution.com/wordpress/2010/01/07/swiz-passive-view-example-part-2/





        2010/3/1 Vinicius Martinez <vinicius.b.marti...@gmail.com
        <mailto:vinicius.b.marti...@gmail.com>>

            Na verdade  isso e uma confusão sem paradeiros..

            Por partes..

            Como voce mesmo disso, o VO (pattern Value Object), é
            utilizado para representação de objetos sem
            identidades..porém em algum momento de tempo/espaço isso
            se perdeu e o pessoal começou a chamas as entidades do
            banco de dados (representação ORM das tabelas) de VO....

            Se alguém conseguir me provar que uma representação desse
            tipo não possui um conceito de identidade (lembrando que é
            uma representação de um modelo de dados presente em algum
            SGDB, ou seja, geralmente possui "Pk's" e "FK's").


            Já o DTO é um outro pattern que basicamente tem algumas
            funções:

            1 - Evitar o tráfego desnecessário de informações na rede
            (EX: supondo que voce tenha um Cadastro de Clientes e
            tenha alguns campos como data de criação, data de
            alteração, etc..esses campos geralmente não são mostrados
            em algumas interfaces sendo assim, voce encapsula esses
            campos "mostráveis" em um objeto de transferência,
            economizando banda de rede)

            2 - separação em camadas

            3 - esconder o modelo de dados da aplicação como um todo

            2010/3/1 Fábio <fabi...@gmail.com <mailto:fabi...@gmail.com>>

                Estou iniciando em Flex e vejo por toda parte o uso do
                nome VO para a representação dos objetos..

                Pelo que eu estudei de DDD (Domain Driven Design), o
                termo VO (Value Object) é usado para representar
                objetos que não tem identidade, ex: Dinheiro

                Já o DTO (Data Transfer Object) é utilizado para troca
                de dados entre sub-sistemas, sendo um termo mais
                parecido com a realidade do Flex, onde é trafegado
                tanto objetos VO e Entity (que tem identidade. Ex:
                Cliente)



                O que vcs acham?


-- Atenciosamente
                Fábio Tadeu da Costa
                fabiotc.com.br <http://fabiotc.com.br>
-- Você recebeu esta mensagem porque está inscrito na
                lista "flexdev"
                Para enviar uma mensagem, envie um e-mail para
                flexdev@googlegroups.com <mailto:flexdev@googlegroups.com>
                Para sair da lista, envie um email em branco para
                flexdev-unsubscr...@googlegroups.com
                <mailto:flexdev-unsubscr...@googlegroups.com>
                Mais opções estão disponíveis em
                http://groups.google.com/group/flexdev




-- Vinicius Branda Martinez

            MSN/GTalk: vinicius.b.marti...@gmail.com
            <mailto:vinicius.b.marti...@gmail.com>
            Skype: vinicius.branda

-- Você recebeu esta mensagem porque está inscrito na lista
            "flexdev"
            Para enviar uma mensagem, envie um e-mail para
            flexdev@googlegroups.com <mailto:flexdev@googlegroups.com>
            Para sair da lista, envie um email em branco para
            flexdev-unsubscr...@googlegroups.com
            <mailto:flexdev-unsubscr...@googlegroups.com>
            Mais opções estão disponíveis em
            http://groups.google.com/group/flexdev




-- Atenciosamente
        Fábio Tadeu da Costa
        www.fabiotc.com.br <http://www.fabiotc.com.br>

-- Você recebeu esta mensagem porque está inscrito na lista "flexdev"
        Para enviar uma mensagem, envie um e-mail para
        flexdev@googlegroups.com <mailto:flexdev@googlegroups.com>
        Para sair da lista, envie um email em branco para
        flexdev-unsubscr...@googlegroups.com
        <mailto:flexdev-unsubscr...@googlegroups.com>
        Mais opções estão disponíveis em
        http://groups.google.com/group/flexdev




-- Mario Junior
    Enterprise Java / Flex Architectures
    Adobe Certified Expert Flex 3 with AIR

    Sofshore Informática
    http://www.sofshore.com.br
    +55 (48) 3337 2003
    Rua Pastor Willian Richard Schisler Filho 452 sl 102, 88034-100
    Itacorubi
    Florianopolis SC Brasil

-- Você recebeu esta mensagem porque está inscrito na lista "flexdev"
    Para enviar uma mensagem, envie um e-mail para
    flexdev@googlegroups.com <mailto:flexdev@googlegroups.com>
    Para sair da lista, envie um email em branco para
    flexdev-unsubscr...@googlegroups.com
    <mailto:flexdev-unsubscr...@googlegroups.com>
    Mais opções estão disponíveis em
    http://groups.google.com/group/flexdev




--
Atenciosamente, Pergentino Araújo.
Arquiteto Java/Flex
MSc. Engenharia de Software
Adobe Certified Expert - Flex 3 with AIR
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev
@Fábio

Eu tambem passei por essa perrenga... mas tudo depende do seu projeto. No meu caso eu optei em utilizar os 2 padrões. Entre os motivos foram:

  1. *Performace*: Em algumas query com o Hibernate, caso do meu SELECT
     de parceiro de negocios tava levando 55s com criteria do
     hibernate, apos a mudança para HQL caiu para apenas milessegundos.
     Usando a opção resultTransformers.
  2. *Compartilhamento de VO's*: em outros projetos até mesmo de
     terceiros (disponibilizei as VO em um .jar para outra empresa)
  3. *Calculos e agrupamentos personalizados*: SELECT complexos que
     necessitem do GROUP BY tambem usando o resultTransformers.


VO - Entidade pública - compartilhada por um .jar
DTO - Mapeamentos e persistencia do banco (aqui no projeto JPA + Hibernate)

ResutlTransformers - metodo responsavel em transformar seu SELECT direto no seu VO

https://www.hibernate.org/hib_docs/v3/api/org/hibernate/transform/ResultTransformer.html

--
Atenciosamente,

Beto +55 61 4063.6303 | 61 8409.1775
Brasília - DF
Web Inovações
www.webinovacoes.com.br

--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com
Para sair da lista, envie um email em branco para 
flexdev-unsubscr...@googlegroups.com
Mais opções estão disponíveis em http://groups.google.com/group/flexdev

Responder a