diferenças minimas ! VO, TO, DTO, POJO  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5169
Localização: Sydney - Australia
Offline

renato3110 wrote:
Não entendi. Não seria o contrário? VO não é um objeto que representa um valor, como uma data ou dinheiro???


Se você me emprestar uma nota de R$10,00 e eu te evolver uma nota de R$10,00 você vai se importar com:

1) A nota ser a mesma (identidade)
ou
2) Eu te retornar a quantidade emprestada (valor)

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
renatosilva
Forum Spammer
[Avatar]

Membro desde: 16/12/2004 17:09:19
Mensagens: 1785
Offline

Estranho Phillip. Você quer dizer a identidade por referência né? Sim, porque duas notas de dez reais semanticamente são iguais eu penso, certo?
[WWW]
ZehOliveira
Virtual Machine Man

Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline


Se codigo for a chave da entidade, eles são iguais em termos de Value Object. Isto é, quando se fala de VOs, instâncias diferentes com mesmo valor são consideradas iguais.
renatosilva
Forum Spammer
[Avatar]

Membro desde: 16/12/2004 17:09:19
Mensagens: 1785
Offline

ZehOliveira wrote:
Se codigo for a chave da entidade, eles são iguais em termos de Value Object. Isto é, quando se fala de VOs, instâncias diferentes com mesmo valor são consideradas iguais.


EDITADO!

Não exatamente pelo o que entendo (não apenas com os VOs). Eu posso considerar duas pessoas iguais através de um código como RG ou CPF, mas você chamaria essas pessoas de VOs?

Um VO é um objeto cuja essência é representar um valor pelo o que entendo, não é apenas um objeto com identidade semântica...
[WWW]
emersonan
HelloWorld

Membro desde: 26/08/2003 14:38:24
Mensagens: 18
Localização: São Paulo/SP
Offline

Olá,

A diferença é conceitual:

VO - Value Object: mapear dados da aplicação. Esses dados podem ser, por exemplo, as tuplas do seu MER ou dados de XML.

DTO = TO - Data Transfer Object: transferir conjunto de dados entre camadas ou susbsistemas da aplicação. É utilizado quando você precisa transportar dados com relacionamento complexo, o tranporte neste conceito de dá entre:

- entre camadas do seu sistema;
- entre subsistemas;
- entre a sua aplicação e uma entidade externa.

O DTO é uma classe que receberá VO's + conjunto de dados e cuidará da associação entre esses dados - para que estejam íntegros na passaem entre as camadas ou subsistemas.

A primeira vista, pode não parecer, mas esta separação de responsabilidades é importantíssima para um grande projeto.

POJO - Plain old java object: é uma classe pura java, que não está acoplada(conceito acoplamento OO) a nenhum framework.

Att,
Emerson Aguiar Noronha

Emerson A. Noronha
[ICQ]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5169
Localização: Sydney - Australia
Offline

http://fragmental.com.br/wiki/index.php?title=Evitando_VOs_e_BOs

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
novais
What is classpath?

Membro desde: 02/09/2003 17:29:47
Mensagens: 7
Localização: Brasília
Offline

Senhores, acredito que o conceito de VO, TO e DTO tenha ficado claro e a literatura (GOF e JEE Patterns) não deixa dúvida. Mas o conceito do POJO não está claro ainda; aí penso se alguém seria capaz de explicar estes conceitos pensando na arquitetura completa de um projeto? Tentarei começar:
Pensando em JSF:
1 - JSP submete a página, a requisição é interceptada por um CONTROLADOR(Servlet JSF) e alimenta um BEAN
2 - Caso existam, os dados são validados por VALIDATORS JSF
3 - Após a validação são chamados objetos de negócio (POJOs) que fazem o processamento dos dados(sacar, transferir, depositar) e chamam um FACADE para chamar as operações de banco;
4 - É criado um DAO que mascara as opções de banco (incluir, alterar, excluir e consultar)
5 - O dado é persistido.

Lembrando: É "RECOMENDÁVEL" que o POJO não extenda ou herde de nenhuma classe, mas se o fizer que exteda ou implemente classes e interfaces de negócio, não de infra-estrutura (como frameworks).

Será que falei alguma coisa errada?

Um abraço,
Novais.
[Yahoo!] [MSN] [ICQ]
celso.martins
Virtual Machine Man
[Avatar]

Membro desde: 19/06/2006 13:54:23
Mensagens: 672
Localização: Rio de Janeiro
Offline

Bem, resolvi ressuscitar esse tópico pq estava pesquisando sobre o assunto e esbarrei com ele.

Pela parábola do empréstimo de 10,00 do Philipp, tirei alguma conclusão, mas preciso de certeza. Fui discutir essa pendenga por aqui e, para variar, rolou uma baita divergência de opnião. É muito difícil estudar sobre esses assuntos, principalmente na Internet, pois parece não haver um consenso sobre o assunto.

Pelo que entendi:

Entity != VO (ou TO). E NUNCA será igual.

Basicamente porque Entity, normalmente, possui um ID que a torna única no sistema. Única em termos de dados, não confundir com o Pattern Singleton. E isso difere do conceito de VO: fowler

Foi a mesma coisa que entendi no artigo da MJ do Sérgio Lopes.

Essa é a sutileza?

Abraços.

Hoje melhor que ontem e pior que amanhã.

Desenvolvimento Psicopata - Qualidade Total
Twitter
Infoblogs - A vitrine do seu blog
[WWW]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team