Como construir um DTO [era: DTO... HEEELLPP! ]

Intaum,
Vou ter que usar DTO para transferir um objeto via socket, porem, sei apenas oq eh um DTO, depois das pesquisas aki no forum, mas naum tenho a menor ideia como implementar 1.

Se alguem tiver um codigo com DTO q possa me enviar agradeco mto, se naum, me fala oq eu coloco na classe interface… :cry:

Obrigado desde ja… xD

[color=red]moderador says: utilize um titulo que diga algo sobre sua duvida, ‘help’ nao vai ajudar a menos que seja relativo a um album dos beatles[/color]

Um DTO não é nada além de uma classe que abstrai os dados relacionados à alguma entidade. Por exemplo, Pessoa:

public class Pessoa { private String nome; private String cpf; private int idade; // getters e setters }
Blz? Flw! :thumbup:

Um DTO otimiza os dados trafegados pelo sistema, geralmente e normalmente só é útil em casos onde este tráfego é caro, como no seue xemplo de passar objetos pela rede.

Como um exemplo, imagine que eu tenha as seguintes classes no meu sistema:

class Pessoa{

 private String nome;
 private String CPF;
 private Date dataDeNascimento;
 private char sexo;
 private char classeEconomica;
}

class Pedido{
 private BigDecimal valorImposto;
 private int codigo;
 private List<Item> itensComprados; //uma lista com muuuuuuitos itens
}

E temos um cliente Swing que precisa exibir uma grande lista no formato:

| CODIGO PEDIDO | NOME CLIENTE | VALOR PEDIDO |

A primeira opção é passar objetos das classes acima via RMI ou algo parecido para o cliente. Após alguns testes verificamos que isso é muito custovo (serializar, passar os bytes, restauras, etc) e já que precisamos apenas de alguns destes dados nós criamos um DataTransferObject que faz apenas isso:

class PedidoPorClienteDTO{
 int codigoPedido;
 String nomeCliente;
 BigDecimal valorotalPedido;

}

Quando o cliente Swing pede estes dados o servidor cria os objetos da classe PedidoPorClienteDTO e os popula com dados das classes ‘de verdade’. Isso é um DTO.

Foi mal pelo titulo… eh q eu nem sabia oq era um DTO direito…

por esse exemplo, vc cria um DTO pra passar apenas oq eh necessario…
e isso? no caso “nome, pedido e total”.

Ou seria pra passar tudo de uma vez soh, como se fosse um unico objeto?

tava lendo por ai… todo DTO tem relacao com um DAO? ou num tem nada a ver um com o outro?

vlw… !

foi mal o titulo… =/

É otimizar para passar paenas o necessário, seja o que for. Você pode utilizar DTOs para trazer dados do SGBD (com um DAO no meio) mas isso não é lá muito recomendado hoje em dia.

Ultima duvida (eu acho)…

é obrigatorio ter uma classe interface?
essa(s) classe interface, seria pra misturar 2 ou mais classes usando apenas as funcoes necessarias e dai montar um DTO?

obrigado…

O que vc recomenda?