3
respostas

DTO X VO

Olá

Basicamente, qual a diferença entre Value Object (VO) e Data Transfer Object (DTO) ?

Obrigado

3 respostas

Oie Marcos, tudo bem contigo?

As principais diferenças são:

VO: É basicamente um objeto usado para exibir dados na camada de apresentação, sua identidade é baseada nos valores de seus atributos.

DTO: Objeto simples usado para transferir dados de um local ao outro na aplicação, não possui lógica de negócios em seus objetos. É geralmente associado a transferência dados entre a camada de visão (view) e a de persistência de dados (model).

Se tiver restado alguma dúvida fico a disposição :)

Bons estudos!

Olá Igor, tudo bem e contigo?

Então deixa eu ver se entendi.. o DTO representa os campos do formulário(view) enquanto o VO representa a volta dos atributos do banco de dados de volta para a camada de apresentação, certo?

É que sempre usei os campos que representam um formulário em classes com Form no final (ex.: FormularioForm.java). Mas tudo bem.

Obrigado

Para facilitar seu entendimento, um exemplo de VO seria a String, sendo ela é imutável e identificado pelo seu valor. Alguns outros exemplos de VO são enderenço, email, cartão, entre muitos outros. Portanto VO é um objeto que tem um valor na aplicação. Segue um exemplo abaixo:

public class Funcionario {

    private Integer id;
    private String nome;
    private String sobrenome;
    private double salario;
    private Endereco endereco; // vamos considerar que o endereço é um dado importante do projeto e por isso decidimos criar um VO para esse dado

    ...
}
public class Endereco {  // essa classe será um objeto será identificada pelos valores presentes em seus atributos e geralmente é usada para aprensentar dados na camada de apresentação.

    private String rua;
    private Integer numero;
    private String cep;

    ...
}

Espero que agora tenha ficado melhor de entender!