diferenças minimas ! VO, TO, DTO, POJO  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
ronildobraga
JavaEvangelist

Membro desde: 29/03/2006 10:06:51
Mensagens: 443
Localização: sao paulo - sp
Offline

Pessoal

Quais as diferenças entre VO, TO, DTO e POJO

O que eu li até agora
VO e TO são absolutamente iquais, sem qualquer diferença... nem mesmo o contexto da situação muda.

DTO serve para transportar varios TO ou VO, ou seja... vária tabelas ? e pode tb funcionar identico ao VO e o TO.

POJO parecido com VO e TO, porem este pode conter algumas logicas de negocio.
Por exemplo... POJO no hibernate é identico ao VO e TO, serve para persistir dados do banco de dados.
Porem POJO pode ser tb um javaBean ? contendo getters and setters e mais algumas logicas como por exemplo sacar ou depositar dinheiro.

Obrigado.

Ronildo da Rocha Braga Jr.
Programador, nada mais.

blog: http://www.iprogramming.blogspot.com/
[Email] [WWW] [MSN]
ZehOliveira
GUJ Ranger

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

POJO, basicamente, é um objeto normal que não estende ou implementa nenhuma classe ou interface de infra-estrutura (nenhuma classe de framework, por exemplo).

O resto é enxeção de linguiça e só faz complicar. Pense e programe para objetos, afinal, Java é uma linguagem orientada a objetos e não orientada a value objects, transfer objects ou data transfer objects.

Os transfers objects você só vai precisar em um contexto bem definido (ambiente distribuído), é totalmente anti-pattern usar fora disso.
TiagoFoil
JavaGuru
[Avatar]

Membro desde: 22/02/2005 19:46:49
Mensagens: 205
Offline

A seguir, o q eu acho.

POJO, VO, DTO e TO são idênticos porém, POJO é um termo usado mais quando estamos falando de padrões GOF, e VO e TO em padrões J2EE.

Ambos são usados para transferir Dados entre as camadas.
[MSN] [ICQ]
renatosilva
GUJ Master

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

POJO é o que você usa para fazer a Matrix
Thiago Senna
GUJ Master
[Avatar]

Membro desde: 11/02/2005 08:08:02
Mensagens: 1595
Offline

Quanto a uma definição de POJO, eu fico com a que o Zeh Oliveira citou.

Quanto ao DTO e TO entendo como o padrão do Core J2EE Patterns, onde estes são utilizados para simplesmente transportar dados de uma camada a outra.

Quanto ao VO, pelo que entendi lendo o livro Model Driven Design (Eric Evans), é uma forma de citar um objeto com getters e setters, no entanto com objetivos diferentes de uma entidade. Por exemplo, uma Entidade pessoa pode ter um VO que seja uma classe do tipo Endereco. Dependendo do contexto, pode acontecer do Endereco ser uma entidade mesmo estando relacionado com o aluno. Meu, o negócio é cavernoso!
[Email]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

A questão que venho me pergutando hoje é:
Será que vale a pena realmente separar a lógica de negócio da classe de atributos ? É purismo OO , ou uma quebra de encapsulação ?


Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
ZehOliveira
GUJ Ranger

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

É anti-OO. Programando com lógica separada de atributos você não tem muito mais que um aglomerado de funções e algumas structs (bom e velho C). Isso é programação procedural...

O problema não é purismo, mas as desvantagens que programação procedural traz pro seu modelo - resusabilidade de código baixa é um exemplo.
TheMask
JavaBaby
[Avatar]

Membro desde: 14/04/2006 19:28:16
Mensagens: 79
Offline

ronildobraga wrote:Quais as diferenças entre VO, TO, DTO e POJO

VO = objeto cuja identidade é baseada nos valores dos seus atributos.
TO==DTO (ou antigo VO) padrão que compõe vários objetos em um de menor granularidade a fim de reduzir o custo em chamadas remotas.
POJO =
ZehOliveira wrote:POJO, basicamente, é um objeto normal que não estende ou implementa nenhuma classe ou interface de infra-estrutura (nenhuma classe de framework, por exemplo).

É isso aí.

Fabrício Cozer Martins wrote:... vale a pena realmente separar a lógica de negócio da classe de atributos ?...

Em geral, você não deve separar a lógica dos dados. Manter isso junto, é um passo para garantir um bom encapsulamento. Exemplo?

**** Demaaaaaaais ****
renatosilva
GUJ Master

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

TheMask wrote:
VO = objeto cuja identidade é baseada nos valores dos seus atributos.


Fowler wrote:A small simple object, like money or a date range, whose equality isn't based on identity.


Não entendi. Não seria o contrário? VO não é um objeto que representa um valor, como uma data ou dinheiro???
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

ZehOliveira wrote:É anti-OO. Programando com lógica separada de atributos você não tem muito mais que um aglomerado de funções e algumas structs (bom e velho C). Isso é programação procedural...

O problema não é purismo, mas as desvantagens que programação procedural traz pro seu modelo - resusabilidade de código baixa é um exemplo.

Então temos um duelo entre :
Separação de Atributos da lógica do negócio x Transportar a lógica do negócio para as outras camadas.


Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
renatosilva
GUJ Master

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

Fabrício Cozer Martins wrote:
ZehOliveira wrote:É anti-OO. Programando com lógica separada de atributos você não tem muito mais que um aglomerado de funções e algumas structs (bom e velho C). Isso é programação procedural...

O problema não é purismo, mas as desvantagens que programação procedural traz pro seu modelo - resusabilidade de código baixa é um exemplo.

Então temos um duelo entre :
Separação de Atributos da lógica do negócio x Transportar a lógica do negócio para as outras camadas.



Como assim?
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

renato3110 wrote:
Fabrício Cozer Martins wrote:
ZehOliveira wrote:É anti-OO. Programando com lógica separada de atributos você não tem muito mais que um aglomerado de funções e algumas structs (bom e velho C). Isso é programação procedural...

O problema não é purismo, mas as desvantagens que programação procedural traz pro seu modelo - resusabilidade de código baixa é um exemplo.

Então temos um duelo entre :
Separação de Atributos da lógica do negócio x Transportar a lógica do negócio para as outras camadas.



Como assim?

Com um TO, vc transportaria somente os dados, sem bussiness rules para as outras camadas, e sem TO, vc transportaria os dados, junto com as bussiness rules.





Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
ZehOliveira
GUJ Ranger

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

Fabrício Cozer Martins wrote:Transportar a lógica do negócio para as outras camadas.

What?
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

ZehOliveira wrote:
Fabrício Cozer Martins wrote:Transportar a lógica do negócio para as outras camadas.

What?

o que eu quis dizer é que na tela, onde os dados seriam apenas para preencher os componentes visuais, os mesmos estariam encapsulados dentro de um objeto apenas, que faz uma operação de negócio complexa, isso claro se vocÊ colocar tudo em um objeto só (sem TO), isso pode quebrar a encapsulação entre camadas.

Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
pcalcado
Moderador
[Avatar]

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

TheMask wrote:
TO==DTO (ou antigo VO) padrão que compõe vários objetos em um de menor granularidade a fim de reduzir o custo em chamadas remotas.


Só um comentário: TO é uma especialização de DTO para EJBs, principalmente Entity Beans. Basicamente um TO não precisa atravessar Camadas, ao contrário de um DTO. Fora deste contexto não há motivo para usar TO, use o termo genérico.

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]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team