View, Controller, DAO

4 respostas
michetti

Então galera preciso de ajuda rsrsrs
Estou voltando a estudar JAVA, ai para ficar com um projeto mais organizado e tudo mais estou usando Orientação a Objetos.
Estou com um formulario onde tem várias textfields, e teoricamente passei ele pro Controller, e posteriormente passei pro DAO.

Porém eu coloquei um JOptionPane para ver o insert e ta chegando tudo nulo no DAO.

Vou postar umas parte para vocês verem e tentarem me ajudar.

VIEW:

public class cadastro_clientes {
    
    private int ID;
    private String Nome;
    private String Empresa;
    private String Endereco;
    private int Numero;
    private String Bairro;
    private String Cidade;
    private String UF;
    private String Telefone;
    private String Celular;
    private String Email;
    
    /**
     * @return the Nome
     */
    public String getNome() {
        return Nome;
    }

    /**
     * @param Nome the Nome to set
     */
    public void setNome(String Nome) {
        this.Nome = Nome;
    }

    /**
     * @return the Empresa
     */
    public String getEmpresa() {
        return Empresa;
    }

    /**
     * @param Empresa the Empresa to set
     */
    public void setEmpresa(String Empresa) {
        this.Empresa = Empresa;
    }

    /**
     * @return the Endereco
     */
    public String getEndereco() {
        return Endereco;
    }

    /**
     * @param Endereco the Endereco to set
     */
    public void setEndereco(String Endereco) {
        this.Endereco = Endereco;
    }

    /**
     * @return the Numero
     */
    public int getNumero() {
        return Numero;
    }

    /**
     * @param Numero the Numero to set
     */
    public void setNumero(int Numero) {
        this.Numero = Numero;
    }

    /**
     * @return the Bairro
     */
    public String getBairro() {
        return Bairro;
    }

    /**
     * @param Bairro the Bairro to set
     */
    public void setBairro(String Bairro) {
        this.Bairro = Bairro;
    }

    /**
     * @return the Cidade
     */
    public String getCidade() {
        return Cidade;
    }

    /**
     * @param Cidade the Cidade to set
     */
    public void setCidade(String Cidade) {
        this.Cidade = Cidade;
    }

    /**
     * @return the UF
     */
    public String getUF() {
        return UF;
    }

    /**
     * @param UF the UF to set
     */
    public void setUF(String UF) {
        this.UF = UF;
    }

    /**
     * @return the Telefone
     */
    public String getTelefone() {
        return Telefone;
    }

    /**
     * @param Telefone the Telefone to set
     */
    public void setTelefone(String Telefone) {
        this.Telefone = Telefone;
    }

    /**
     * @return the Celular
     */
    public String getCelular() {
        return Celular;
    }

    /**
     * @param Celular the Celular to set
     */
    public void setCelular(String Celular) {
        this.Celular = Celular;
    }

    /**
     * @return the Email
     */
    public String getEmail() {
        return Email;
    }

    /**
     * @param Email the Email to set
     */
    public void setEmail(String Email) {
        this.Email = Email;
    }

    /**
     * @return the ID
     */
    public int getID() {
        return ID;
    }

    /**
     * @param ID the ID to set
     */
    public void setID(int ID) {
        this.ID = ID;
    }

CONTROLLER:

public class cadastro_clientesBUSINESS {
    private cadastro_clientesDAO dao;
    
    public cadastro_clientesBUSINESS(){
        this.dao = new cadastro_clientesDAO();
        
    }
    public void salvar(cadastro_clientes save){
        dao.cadastroClientes(save);
        
    }    
    public List<cadastro_clientes> buscar(){
        return dao.listarClientes();
        
    }
    
}

DAO:

public int cadastroClientes(cadastro_clientes save){
        int result = 0;
        Conexao inserir = new Conexao();
        cadastro_clientes c = new cadastro_clientes();
        String NO,EM,EN,NU,BA,CI,UF,TEL,CEL,EMAIL,insert="";
        
        NO=c.getNome();
        EM=c.getEmpresa();
        EN=c.getEndereco();
        NU=String.valueOf(c.getNumero());
        BA=c.getBairro();
        CI=c.getCidade();
        UF=c.getUF();
        TEL=c.getTelefone();
        CEL=c.getCelular();
        EMAIL=c.getEmail();
        insert = "insert into cadastro_clientes(nome,empresa,endereco,numero,bairro,cidade,uf,telefone,celular,email)" + "values ('" + NO + "','" + EM + "','" + EN + "'," + NU + ",'"+ BA +"','"+ CI +"','"+ UF+"','"+ TEL+"','"+ CEL +"','"+EMAIL+"')";
        JOptionPane.showMessageDialog(null, insert);
        try {
            inserir.Atualiza(insert);
        } catch (SQLException ex) {
            Logger.getLogger(clientes.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            inserir.Exit();
        } catch (SQLException ex) {
            Logger.getLogger(clientes.class.getName()).log(Level.SEVERE, null, ex);
        }
        try {
            result = inserir.stat.executeUpdate(insert);
        } catch (SQLException ex) {
            Logger.getLogger(cadastro_clientesDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return result;
    
    }

E onde estou com os TextField eu fiz isso

public void cadastro_clientes(){
        cadastro_clientes newc = new cadastro_clientes();
        cadastro_clientesBUSINESS cb = new cadastro_clientesBUSINESS();
        newc.setBairro(String.valueOf(jtfBairro));
        newc.setNome(String.valueOf(jtfNome));
        newc.setCelular(String.valueOf(jtfCelular));
        newc.setCidade(String.valueOf(jtfCelular));
        newc.setEmail(String.valueOf(jtfEmail));
        newc.setEmpresa(String.valueOf(jtfEmpresa));
        newc.setEndereco(String.valueOf(jtfEndereco));
        newc.setNumero(11);
        newc.setTelefone(String.valueOf(jtfTelefone));
        newc.setUF("uf");
        cb.salvar(newc);
    }

4 Respostas

Ruttmann

Você tá criando um novo objeto da tela, como que vai ter valores se o objeto é criado com todo os TextFields vazios?

Não li direito seu código, mas tomando como ponto de partida que ele seja uma simples tela de cadastro, você deve, no evento de clique do botão “Cadastrar”, criar um novo objeto de cadastro_clientes, definir os valores de cada TextField para cada atributo da classe, e em seguida passar esse objeto pra sua classe de persistência.

Uma dica: Seu código tá bem bagunçado, por exemplo, nome de classe sempre começa com maiúscula(em vez de cadastro_clientes, faça CadastroClientes).

Estude mais a fundo os conceitos da Orientação a Objetos, procure projetos prontos com interface gráfica, pra você ver como funciona essa passagem de valores da Interface para o objeto a ser persistido.

:wink:

michetti

Eu tenho este formulário, e um botão INCLUIR.
Ao clicar no botão chama a o cadastro_Clientes();

Você tem algum projeto usando MVC que você não usa mais e que possa me passar pra estudo ?

Ruttmann
michetti:
Eu tenho este formulário, e um botão INCLUIR. Ao clicar no botão chama a o cadastro_Clientes();

Você tem algum projeto usando MVC que você não usa mais e que possa me passar pra estudo ?

Infelizmente no padrão MVC não tenho nada que vá te ajudar, tenho algumas coisas com interface em Swing, mas sem nenhum padrão de projeto aplicado e sem persistência em BD.

Mas quanto a esse seu problema, vou te dar umas dicas, passando por todo o fluxo de funcionamento do sistema...

Neste trecho você está fazendo corretamente, instanciando um objeto do seu modelo, e atribuindo todos os valores que o usuário digitou aos devidos atributos da classe de modelo:
public void cadastro_clientes(){  
    cadastro_clientes newc = new cadastro_clientes();  
    cadastro_clientesBUSINESS cb = new cadastro_clientesBUSINESS();  
    newc.setBairro(String.valueOf(jtfBairro));  
    newc.setNome(String.valueOf(jtfNome));  
    newc.setCelular(String.valueOf(jtfCelular));  
    newc.setCidade(String.valueOf(jtfCelular));  
    newc.setEmail(String.valueOf(jtfEmail));  
    newc.setEmpresa(String.valueOf(jtfEmpresa));  
    newc.setEndereco(String.valueOf(jtfEndereco));  
    newc.setNumero(11);  
    newc.setTelefone(String.valueOf(jtfTelefone));  
    newc.setUF("uf");  
    cb.salvar(newc);  
}

Em seguida, na última linha, você chama o salvar() da sua classe Controller, o que também está correto. E este salvar() da classe Controller chama o método da DAO abaixo:

public int cadastroClientes(cadastro_clientes save){  
    int result = 0;  
    Conexao inserir = new Conexao();  
    cadastro_clientes c = new cadastro_clientes();  
    String NO,EM,EN,NU,BA,CI,UF,TEL,CEL,EMAIL,insert="";  
      
    NO=c.getNome();  
    EM=c.getEmpresa();  
    EN=c.getEndereco();  
    NU=String.valueOf(c.getNumero());  
    BA=c.getBairro();  
    CI=c.getCidade();  
    UF=c.getUF();  
    TEL=c.getTelefone();  
    CEL=c.getCelular();  
    EMAIL=c.getEmail();  
    insert = "insert into cadastro_clientes(nome,empresa,endereco,numero,bairro,cidade,uf,telefone,celular,email)" + "values ('" + NO + "','" + EM + "','" + EN + "'," + NU + ",'"+ BA +"','"+ CI +"','"+ UF+"','"+ TEL+"','"+ CEL +"','"+EMAIL+"')";  
    JOptionPane.showMessageDialog(null, insert);  
    try {  
        inserir.Atualiza(insert);  
    } catch (SQLException ex) {  
        Logger.getLogger(clientes.class.getName()).log(Level.SEVERE, null, ex);  
    }  
    try {  
        inserir.Exit();  
    } catch (SQLException ex) {  
        Logger.getLogger(clientes.class.getName()).log(Level.SEVERE, null, ex);  
    }  
    try {  
        result = inserir.stat.executeUpdate(insert);  
    } catch (SQLException ex) {  
        Logger.getLogger(cadastro_clientesDAO.class.getName()).log(Level.SEVERE, null, ex);  
    }  
    return result;  
  
}

Você criou um novo Cliente(veja que este seria o nome mais correto para a sua classe Model), passou ele para a classe Controller aplicar as devidas regras de negócio necessárias, e esta classe passou o objeto para a classe DAO.

O que você fez com o objeto de Cliente que passou por parâmetro para o método cadastroClientes da sua classe DAO? Note que você recebe um objeto por parâmetro mas não faz nada com ele. Criou um objeto novo(linha 4), com todos os atributos vazios e está tentando persistir esse objeto, logicamente tudo vai estar nulo.

Apague a linha 4, e em vez de pegar os atributos do objeto com o handler c(linhas 7 até 16), pegue os atributos do objeto save, que é o que está com todos os atributos preenchidos.

michetti

Ótima dica a sua, consegui entender tudo.
Vou passar suas dicas para o meu programa e posto se deu tudo certim.

Obrigado.

Criado 20 de outubro de 2013
Ultima resposta 21 de out. de 2013
Respostas 4
Participantes 2