Classe DTO estar correto?[RESOLVIDO]

15 respostas
milarflores
package classeDTO;

/**
 *
 * @author Losp Sy's Milar Flores
 */
public class ClienteDTO {

    //Informações pessoais do cliente.
    private int codigo;
    private String nome;
    private String dataDeNascimento;
    private String sexo;
    private String rg;
    private String cpf;
    private String endereco;
    private String complemento;
    private String nDaCasa;
    private String bairro;
    private String cep;
    private String cidade;
    private String estado;
    private String casaPropria;
    private String telefone1;
    private String telefone2;
    private String fax;
    private String cel1;
    private String cel2;
    private String email1;
    private String email2;
    private String email3;
    
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setDataDeNascimento(String dataDeNascimento) {
        this.dataDeNascimento = dataDeNascimento;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public void setnDaCasa(String nDaCasa) {
        this.nDaCasa = nDaCasa;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public void setCasaPropria(String casaPropria) {
        this.casaPropria = casaPropria;
    }

    public void setTelefone1(String telefone1) {
        this.telefone1 = telefone1;
    }

    public void setTelefone2(String telefone2) {
        this.telefone2 = telefone2;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public void setCel1(String cel1) {
        this.cel1 = cel1;
    }

    public void setCel2(String cel2) {
        this.cel2 = cel2;
    }

    public void setEmail1(String email1) {
        this.email1 = email1;
    }

    public void setEmail2(String email2) {
        this.email2 = email2;
    }

    public void setEmail3(String email3) {
        this.email3 = email3;
    }

    public int getCodigo() {
        return codigo;
    }

    public String getNome() {
        return nome;
    }

    public String getDataDeNascimento() {
        return dataDeNascimento;
    }

    public String getSexo() {
        return sexo;
    }

    public String getRg() {
        return rg;
    }

    public String getCpf() {
        return cpf;
    }

    public String getEndereco() {
        return endereco;
    }

    public String getComplemento() {
        return complemento;
    }

    public String getnDaCasa() {
        return nDaCasa;
    }

    public String getBairro() {
        return bairro;
    }

    public String getCep() {
        return cep;
    }

    public String getCidade() {
        return cidade;
    }

    public String getEstado() {
        return estado;
    }

    public String getCasaPropria() {
        return casaPropria;
    }

    public String getTelefone1() {
        return telefone1;
    }

    public String getTelefone2() {
        return telefone2;
    }

    public String getFax() {
        return fax;
    }

    public String getCel1() {
        return cel1;
    }

    public String getCel2() {
        return cel2;
    }

    public String getEmail1() {
        return email1;
    }

    public String getEmail2() {
        return email2;
    }

    public String getEmail3() {
        return email3;
    }

    //Informações da empresa.
    private String firmaOuRazaoSocial;
    private String nomeFantasia;
    private String inscricaoEstadual;
    private String cnpj;
    private String telefoneLoja;
    private String telefoneLoja2;
    private String faxLoja;
    private String emailLoja1;
    private String emailLoja2;
    private String enderecoLoja;
    private String nDaLoja;
    private String complementoLoja;
    private String bairroLoja;
    private String municipio;
    private String uF;
    private String cepLoja;

    public void setFirmaOuRazaoSocial(String firmaOuRazaoSocial) {
        this.firmaOuRazaoSocial = firmaOuRazaoSocial;
    }

    public void setNomeFantasia(String nomeFantasia) {
        this.nomeFantasia = nomeFantasia;
    }

    public void setInscricaoEstadual(String inscricaoEstadual) {
        this.inscricaoEstadual = inscricaoEstadual;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public void setTelefoneLoja(String telefoneLoja) {
        this.telefoneLoja = telefoneLoja;
    }

    public void setTelefoneLoja2(String telefoneLoja2) {
        this.telefoneLoja2 = telefoneLoja2;
    }

    public void setFaxLoja(String faxLoja) {
        this.faxLoja = faxLoja;
    }

    public void setEmailLoja1(String emailLoja1) {
        this.emailLoja1 = emailLoja1;
    }

    public void setEmailLoja2(String emailLoja2) {
        this.emailLoja2 = emailLoja2;
    }

    public void setEnderecoLoja(String enderecoLoja) {
        this.enderecoLoja = enderecoLoja;
    }

    public void setnDaLoja(String nDaLoja) {
        this.nDaLoja = nDaLoja;
    }

    public void setComplementoLoja(String complementoLoja) {
        this.complementoLoja = complementoLoja;
    }

    public void setBairroLoja(String bairroLoja) {
        this.bairroLoja = bairroLoja;
    }

    public void setMunicipio(String municipio) {
        this.municipio = municipio;
    }

    public void setuF(String uF) {
        this.uF = uF;
    }

    public void setCepLoja(String cepLoja) {
        this.cepLoja = cepLoja;
    }

    public String getFirmaOuRazaoSocial() {
        return firmaOuRazaoSocial;
    }

    public String getNomeFantasia() {
        return nomeFantasia;
    }

    public String getInscricaoEstadual() {
        return inscricaoEstadual;
    }

    public String getCnpj() {
        return cnpj;
    }

    public String getTelefoneLoja() {
        return telefoneLoja;
    }

    public String getTelefoneLoja2() {
        return telefoneLoja2;
    }

    public String getFaxLoja() {
        return faxLoja;
    }

    public String getEmailLoja1() {
        return emailLoja1;
    }

    public String getEmailLoja2() {
        return emailLoja2;
    }

    public String getEnderecoLoja() {
        return enderecoLoja;
    }

    public String getnDaLoja() {
        return nDaLoja;
    }

    public String getComplementoLoja() {
        return complementoLoja;
    }

    public String getBairroLoja() {
        return bairroLoja;
    }

    public String getMunicipio() {
        return municipio;
    }

    public String getuF() {
        return uF;
    }

    public String getCepLoja() {
        return cepLoja;
    }
}

15 Respostas

S

Essa classe JB está correto, porém vc pode separar os atributos do cliente e os atributos da empresa. Coloque-os em outra classe. ClienteDTO e EmpresaDTO

Abdon

Vc realmente precisa de um DTO? Existem pilhas de artigos na internet que desencorajam o uso deste padrão.

http://www.adam-bien.com/roller/abien/entry/how_evil_are_actually_data

milarflores

Cara assim eu gostei de fazer o sofrware em MVC em camadas até em meus estudo vejo muito programadores usando o mvc por serem uma forma muito segura e vc faz como?
eu odieo os Jframe com muito codigos eu só chamo os metodos lá…

M

Muito cuidado! Separação em camadas e uso de MVC não estão relacionados (muito menos são a mesma coisa). É possível sim usar ambas as coisas em um programa, mas não as confunda. Artigo: http://sergiotaborda.javabuilding.com/2009/11/mvc-e-camadas/

luistiagos

como ja te disseram… crie 2 DTOs uma EmpresaDTO e outro ClienteDTO… e uma dica que te dou… evite usar coisas do tipo telefone1, telefone2, telefone3… e se alguem dia precisar inserir um 4 outro dia 5 e assim por diante? faça um List de telefones, emails e coisas do genero…

milarflores

Oi
luistiagos.
é eu uso muito arraylist porem esse cadastro é baseado na sefaz (secretaria da fazenda) da bahia e só permite que seja de 1 a 3 telefones…
e e-mail eu tou sendo ousado em colocar 3 para meu cliente entendeu?

luistiagos

mesmo assim 3 atributos diferentes para a mesma coisa é uma pessima pratica…

G

ovelha:
Vc realmente precisa de um DTO? Existem pilhas de artigos na internet que desencorajam o uso deste padrão.

http://www.adam-bien.com/roller/abien/entry/how_evil_are_actually_data

Vejo tanta gente falando isso como se DTO fosse o fim do mundo. Quero ver você trabalhar com um módulo EJB remoto sem DTO…

milarflores

Sim luiz então seria bom usar um array com tamanho determinado?

Jair_Rillo_Junior

Você realmente precisa de DTO? (trabalha com cluster, trafega muitos dados remotamente e isso tem um alto custo, um POJO que represente sua entidade física não pode ser trafegado, etc etc etc?).

Enfim, se você realmente precisa de um DTO, então a regra básica é: Crie o(s) DTO(s) de acordo com os dados que seu cliente precisa. Se seu cliente precisa de apenas 2 campos, crie um DTO com esses 2 campos. NUNCA crie um DTO genérico.

ps: Caso sua aplicação comece a ficar com muitos DTOs é bom rever a arquitetura e seus objetos de domínio.

G

Jair, concordo e ratifico cada palavra que você escreveu.

Além do comentário que o pessoal já citou lá encima de separar o que é de pessoa, endereço, etc… você deve deixar seus DTOs mais especializados conforme você citou. Em um projeto um pouco complexo que tenho eu tenho, por exemplo, uma classe Person apenas com o ID, nome e mais alguns campos que uso muito. Já os detalhes da pessoa está no DTO PersonDetails.

ralphsilver
milarflores:
package classeDTO;

/**
 *
 * @author Losp Sy's Milar Flores
 */
public class ClienteDTO {

    //Informações pessoais do cliente.
    private int codigo;
    private String nome;
    private String dataDeNascimento;
    private String sexo;
    private String rg;
    private String cpf;
    private String endereco;
    private String complemento;
    private String nDaCasa;
    private String bairro;
    private String cep;
    private String cidade;
    private String estado;
    private String casaPropria;
    private String telefone1;
    private String telefone2;
    private String fax;
    private String cel1;
    private String cel2;
    private String email1;
    private String email2;
    private String email3;
    
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setDataDeNascimento(String dataDeNascimento) {
        this.dataDeNascimento = dataDeNascimento;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public void setnDaCasa(String nDaCasa) {
        this.nDaCasa = nDaCasa;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public void setCasaPropria(String casaPropria) {
        this.casaPropria = casaPropria;
    }

    public void setTelefone1(String telefone1) {
        this.telefone1 = telefone1;
    }

    public void setTelefone2(String telefone2) {
        this.telefone2 = telefone2;
    }

    public void setFax(String fax) {
        this.fax = fax;
    }

    public void setCel1(String cel1) {
        this.cel1 = cel1;
    }

    public void setCel2(String cel2) {
        this.cel2 = cel2;
    }

    public void setEmail1(String email1) {
        this.email1 = email1;
    }

    public void setEmail2(String email2) {
        this.email2 = email2;
    }

    public void setEmail3(String email3) {
        this.email3 = email3;
    }

    public int getCodigo() {
        return codigo;
    }

    public String getNome() {
        return nome;
    }

    public String getDataDeNascimento() {
        return dataDeNascimento;
    }

    public String getSexo() {
        return sexo;
    }

    public String getRg() {
        return rg;
    }

    public String getCpf() {
        return cpf;
    }

    public String getEndereco() {
        return endereco;
    }

    public String getComplemento() {
        return complemento;
    }

    public String getnDaCasa() {
        return nDaCasa;
    }

    public String getBairro() {
        return bairro;
    }

    public String getCep() {
        return cep;
    }

    public String getCidade() {
        return cidade;
    }

    public String getEstado() {
        return estado;
    }

    public String getCasaPropria() {
        return casaPropria;
    }

    public String getTelefone1() {
        return telefone1;
    }

    public String getTelefone2() {
        return telefone2;
    }

    public String getFax() {
        return fax;
    }

    public String getCel1() {
        return cel1;
    }

    public String getCel2() {
        return cel2;
    }

    public String getEmail1() {
        return email1;
    }

    public String getEmail2() {
        return email2;
    }

    public String getEmail3() {
        return email3;
    }

    //Informações da empresa.
    private String firmaOuRazaoSocial;
    private String nomeFantasia;
    private String inscricaoEstadual;
    private String cnpj;
    private String telefoneLoja;
    private String telefoneLoja2;
    private String faxLoja;
    private String emailLoja1;
    private String emailLoja2;
    private String enderecoLoja;
    private String nDaLoja;
    private String complementoLoja;
    private String bairroLoja;
    private String municipio;
    private String uF;
    private String cepLoja;

    public void setFirmaOuRazaoSocial(String firmaOuRazaoSocial) {
        this.firmaOuRazaoSocial = firmaOuRazaoSocial;
    }

    public void setNomeFantasia(String nomeFantasia) {
        this.nomeFantasia = nomeFantasia;
    }

    public void setInscricaoEstadual(String inscricaoEstadual) {
        this.inscricaoEstadual = inscricaoEstadual;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public void setTelefoneLoja(String telefoneLoja) {
        this.telefoneLoja = telefoneLoja;
    }

    public void setTelefoneLoja2(String telefoneLoja2) {
        this.telefoneLoja2 = telefoneLoja2;
    }

    public void setFaxLoja(String faxLoja) {
        this.faxLoja = faxLoja;
    }

    public void setEmailLoja1(String emailLoja1) {
        this.emailLoja1 = emailLoja1;
    }

    public void setEmailLoja2(String emailLoja2) {
        this.emailLoja2 = emailLoja2;
    }

    public void setEnderecoLoja(String enderecoLoja) {
        this.enderecoLoja = enderecoLoja;
    }

    public void setnDaLoja(String nDaLoja) {
        this.nDaLoja = nDaLoja;
    }

    public void setComplementoLoja(String complementoLoja) {
        this.complementoLoja = complementoLoja;
    }

    public void setBairroLoja(String bairroLoja) {
        this.bairroLoja = bairroLoja;
    }

    public void setMunicipio(String municipio) {
        this.municipio = municipio;
    }

    public void setuF(String uF) {
        this.uF = uF;
    }

    public void setCepLoja(String cepLoja) {
        this.cepLoja = cepLoja;
    }

    public String getFirmaOuRazaoSocial() {
        return firmaOuRazaoSocial;
    }

    public String getNomeFantasia() {
        return nomeFantasia;
    }

    public String getInscricaoEstadual() {
        return inscricaoEstadual;
    }

    public String getCnpj() {
        return cnpj;
    }

    public String getTelefoneLoja() {
        return telefoneLoja;
    }

    public String getTelefoneLoja2() {
        return telefoneLoja2;
    }

    public String getFaxLoja() {
        return faxLoja;
    }

    public String getEmailLoja1() {
        return emailLoja1;
    }

    public String getEmailLoja2() {
        return emailLoja2;
    }

    public String getEnderecoLoja() {
        return enderecoLoja;
    }

    public String getnDaLoja() {
        return nDaLoja;
    }

    public String getComplementoLoja() {
        return complementoLoja;
    }

    public String getBairroLoja() {
        return bairroLoja;
    }

    public String getMunicipio() {
        return municipio;
    }

    public String getuF() {
        return uF;
    }

    public String getCepLoja() {
        return cepLoja;
    }
}

Sugiro você também começar a encapsular suas classes para futuramente ter um reuso de software. Eu vi que já te sugeriram quebrar a classe em 2. Tenta agora fazer uma classe para telefone, email, endereço, etc. e depois disso, relacione com List, de acordo com o seu mapeamento de classses (one-to-many, many-to-one, many-to-many).
Case você não tenha feito, procure fazer um mapeamento de classes e entidade, para que você consiga enxergar melhor o mapeamento do projeto.

Jair_Rillo_Junior

Outro ponto que eu acho importante estar ciente em um DTO: Ele deve ser algo específico para a necessidade do cliente. Ele não é uma cópia do seu domínio, isso é um erro muito grave.
Estão falando dos 3 atributos para telefone errado, que o correto deveria ser uma List, que poderia quebrar essa classe em outras N classes… bom, em um conjunto de domínios isso estaria totalmente correto, porém, na minha opinião, o DTO tem que ser específico. Se o cliente precisa de apenas 3 telefones, coloque os 3 telefones, assim ele não vai ficar “iterando” por outros objetos. Precisa de reuso em DTO? Bom, o DTO deve ser específico, mas isso não ignora o fato dele poder ser reusado. Na minha experiência, isso ocorre poucas vezes e cada caso é um caso que deve ser analisado de forma única.

Espero ter ajudado.

sergiotaborda

Se o seu DTO está correto ? O que significa “correto” ?
O seu codigo tem vários problemas, como usar String para todos os atributos, mas dependendo do uso do DTO isso pode estar correto.
Sem a definição do contexto em que vai ser usado e a razão de porque precisa ser usado, não ha como saber se está correto.

milarflores

Sergio…
Bom galera eu nunca entrei numa faculdade ou curso especialização em Java…
isso é estudo próprio… e sem muito tempo
bom eu usei String pelo fato de que aprendir a colocar String pra tuda variavel que não vou fazer calculo.
mais por que colocar varias String num é bom?
isso é errado usar string para tudos os atributos?
ralp… eu num sou muito bom com array, ainda estou praticando, eu criei uma classe clienteDTO mandario eu criar empressa também já criei… o q vc mandou fazer foi isso?
Abraços pessoal

Criado 1 de fevereiro de 2010
Ultima resposta 4 de fev. de 2010
Respostas 15
Participantes 9