Implementar herança na class DAO

3 respostas
zeimbic
Ola pessoal eu estou com uma duvida em relação a herança eu estou fazendo um pequeno sistema web 
no qual eu tenho varias classes usando herança, so que eu quero usar um metodo para gravar os dados
no banco tipo eu criei o metodo gravarCliente e quero colocar todas as variaveis neste metodo de uma so vez sem precisar
criar varios metos para gravar.

o codigo e este

package cliente;

public class Cliente {

    private String nome = null;
    private String sobreNome = null;
    private String dataNascimento = null;
    private String nomePai = null;
    private String nomeMae = null;
    private String cidadeOrigem = null;
    private String estadoOrigem = null;
    private String paisOrigem = null;
    private String estadoCivil = null;
    private String filhos = null;

    public Cliente(){}

    public Cliente(String nome, String sobreNome, String dataNascimento,
            String nomePai, String nomeMae, String cidadeOrigem,
            String estadoOrigem, String paisOrigem,
            String estadoCivil, String filhos)
    {
        this.nome = nome;
        this.sobreNome = sobreNome;
        this.dataNascimento = dataNascimento;
        this.nomePai = nomePai;
        this.nomeMae = nomeMae;
        this.cidadeOrigem = cidadeOrigem;
        this.estadoOrigem = estadoOrigem;
        this.paisOrigem = paisOrigem;
        this.estadoCivil = estadoCivil;
        this.filhos = filhos;
    }

    public String getNome()
    {return nome;}

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

    public String getSobreNome()
    {return sobreNome;}

    public void setSobreNome(String sobreNome)
    {this.sobreNome = sobreNome;}

    public String getDataNascimento()
    {return dataNascimento;}

    public void setDataNascimento(String dataNascimento)
    {this.dataNascimento = dataNascimento;}

    public String getNomePai()
    {return nomePai;}

    public void setNomePai(String nomePai)
    {this.nomePai = nomePai;}

    public String getNomeMae()
    {return nomeMae;}

    public void setNomeMae(String nomeMae)
    {this.nomeMae = nomeMae;}

    public String getCidadeOrigem()
    {return cidadeOrigem;}

    public void setCidadeOrigem(String cidadeOrigem)
    {this.cidadeOrigem = cidadeOrigem;}

    public String getEstadoOrigem()
    {return estadoOrigem;}

    public void setEstadoOrigem(String estadoOrigem)
    {this.estadoOrigem = estadoOrigem;}

    public String getPaisOrigem()
    {return paisOrigem;}

    public void setPaisOrigem(String paisOrigem)
    {this.paisOrigem = paisOrigem;}

    public String getEstadoCivil()
    {return estadoCivil;}

    public void setEstadoCivil(String estadoCivil)
    {this.estadoCivil = estadoCivil;}

    public String getFilhos()
    {return filhos;}

    public void setFilhos(String filhos)
    {this.filhos = filhos;}
}

-----------------------------------

package cliente;

public class Documentos extends Cliente {

    private int cpf;
    private int identidade;
    private int cnpj;
    private int inscriçãoEstadual;
    private int inscriçãoFederal;
    private int inscriçãoMunicipal;

    public Documentos(){}

    public Documentos(String nome, String sobreNome, String dataNascimento,
String nomePai, String nomeMae, String cidadeOrigem,
String estadoOrigem, String paisOrigem, String estadoCivil, 
String filhos, int cpf, int identidade, int cnpj, int inscriçãoEstadual,
int inscriçãoFederal, int inscriçãoMunicipal)

    {   super(nome, sobreNome, dataNascimento, nomePai ,nomeMae, cidadeOrigem,
              estadoOrigem, paisOrigem, estadoCivil, filhos);

        this.cpf = cpf;
        this.identidade = identidade;
        this.cnpj = cnpj;
        this.inscriçãoEstadual = inscriçãoEstadual;
        this.inscriçãoFederal = inscriçãoFederal;
        this.inscriçãoMunicipal = inscriçãoMunicipal;

    }

    public int getCpf()
    {return cpf;}

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

    public int getIdentidade()
    {return identidade;}

    public void setIdentidade(int identidade)
    {this.identidade = identidade;}

    public int getCnpj()
    {return cnpj;}

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

    public int getInscriçãoEstadual()
    {return inscriçãoEstadual;}

    public void setInscriçãoEstadual(int inscriçãoEstadual)
    {this.inscriçãoEstadual = inscriçãoEstadual;}

    public int getInscriçãoFederal()
    {return inscriçãoFederal;}

    public void setInscriçãoFederal(int inscriçãoFederal)
    {this.inscriçãoFederal = inscriçãoFederal;}

    public int getInscriçãoMunicipal()
    {return inscriçãoMunicipal;}

    public void setInscriçãoMunicipal(int inscriçãoMunicipal)
    {this.inscriçãoMunicipal = inscriçãoMunicipal;}

}

---------------------------


package cilenteDao;

import cliente.Cliente;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class ClienteDAO {

    Connection conexao;
    
    public ClienteDAO(Connection conexao){this.conexao = conexao;}
    
    public void gravarCliente(Cliente clienteX ) throws SQLException
   
    { String comando = "insert into app.cliente ( nome,sobreNome,dataNascimento," +
"nomePai,nomeMae,cidadeOrigem,estadoOrigem,paisOrigem,estadoCivil,filhos,cpf," +
"identidade,cnpj,inscriçãoEstadual,inscriçãoFederal,inscriçãoMunicipal,endereço," +
"numero,apBloco,cidade,estado,cep,pais,email,telefone )" +
" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    
    PreparedStatement p;
    try{
        p = this.conexao.prepareStatement(comando);
        p.setString(1, clienteX.getNome());
        p.setString(2, clienteX.getSobreNome());
        p.setString(3, clienteX.getDataNascimento());
        p.setString(4, clienteX.getNomePai());
        p.setString(5, clienteX.getNomeMae());
        p.setString(6, clienteX.getCidadeOrigem());
        p.setString(7, clienteX.getEstadoOrigem());
        p.setString(8, clienteX.getPaisOrigem());
        p.setString(9, clienteX.getEstadoCivil());
        p.setString(9, clienteX.getFilhos());
        p.setString(10, clienteX.getCpf());
       
        
        
    }catch (SQLException e){e.printStackTrace();}
      
    }

    
   }


por favor da uma dica ai...

3 Respostas

leandronsp

Você quis dizer sobre aquele monte de chamadas de getter do prepareStatement? É isso?

Se for, acredito que você consegue evitar usando Reflection ou partindo pro JPA.

Outra coisa, sua modelagem tá estranha: Documento É-UM Cliente? Nunca vi isso…você pode tirar a herança e usar composição (Cliente TEM Documento)

public class Cliente {
  // Atributos aqui
  
  private Documento documento;
}
zeimbic
bom eu acho q descobri ... hahahha ... vou usar a ultima camada da herança.

entao vai ficar assim vou usar  public void gravarCliente(Documentos clienteX ) throws SQLException

ao inves de  public void gravarCliente(Cliente clienteX ) throws SQLException

porque a classe documento herda todos os atributos de cliente. se alguem tiver outra forma de fazer da uma dica... valeu..
zeimbic

nossa e verdade nao tinha reparado isso… hahaha

valeu…

Criado 20 de novembro de 2011
Ultima resposta 20 de nov. de 2011
Respostas 3
Participantes 2