Duvidas Java + MVC+JBDC

2 respostas
programaçãojava
J

Ola pessoal, estou começando agora meus estudos com java e MVC e gostaria de uma ajuda de vcs.
Pensando em um exemplo bem simples, uma agenda, utilizando javaSE+mvc+mysql+swing.
Seguem minhas classes:

<strong><strong><strong><strong><strong><strong><strong><strong><strong>DAO</strong></strong></strong></strong></strong></strong></strong></strong></strong>*****

package dao;

import java.sql.*;

import javax.swing.JOptionPane;
public class ConectorBD {

public static Connection conector(){

Connection conexao = null;
String driver = "com.mysql.jdbc.Driver"; //chama o driver
    String banco = "agenda";
    String localbd = "localhost:3306"; 
    String url = "jdbc:mysql://" + localbd + "/" + banco;
    String user = "root";
    String password = "";   
    try {
        Class.forName(driver);
        conexao = DriverManager.getConnection(url, user, password);
        return conexao;
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
        return null;
    }
}

}

package dao;

import java.sql.*;

import javax.swing.JOptionPane;

import modelo.Pessoa_Modelo;

import modelo.Pessoas_modelo;
public class Pessoa_DAO {

Connection conexao = null;

PreparedStatement pst = null;

ResultSet rs = null;
public Pessoa_DAO() {
    conexao = ConectorBD.conector();
}

public void adicionar(Pessoa_Modelo pessoaModelo) {
    String sql = "insert into pessoas (nome, idade) values(?,?)";
    try {
        pst = conexao.prepareStatement(sql);
        pst.setString(1, pessoaModelo.getNome());
        pst.setInt(2,    pessoaModelo.getIdade());
     
        if (pst.executeUpdate() > 0){
            JOptionPane.showMessageDialog(null, "sucesso!");
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

}
FIM DAO********

<strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><em>MODELO</em></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong></strong>**********

package modelo;

public class Pessoa_Modelo {

private int id;

private String nome;

private int idade;
public Pessoa_Modelo() {
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getNome() {
    return nome;
}

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

public int getIdade() {
    return idade;
}

public void setIdade(int idade) {
    this.idade = idade;
}

}


***************CONTROLE
package controle;

import modelo.Pessoa_Modelo;

public class Pessoas_Controle {

public String gravar(Pessoa_modelo pessoa){
     return ????
}

}


VISAO**************
Apenas um cadastro com um jTextField para inserir o nome, e um botao “GRAVAR”


Minha duvida esta na ligação entre a VISÃO e o CONTROLE, quando o usuario clica no botão gravar eu devo chamar a classe controle? se sim, o que eu codifico no metodo da classe controle (ela chama oq?)

Desculpe se parece muito amadorismo, mas tentei escrever de forma mais simples para tentar resolver minhas duvidas

obrigado a todos

2 Respostas

darlan_machado

Evite usar _ em nomes de classes, métodos e atributos. De acordo com a convenção javaBeans, o correto e´utilizar em nomes de constantes.
Pois berm, o Swing é meio avesso ao MVC, visto que, ele não foi pensado para que houvesse separação da view e controller.
Porém, a maneira que você pensou, fica mais interessante de implementar.
Seguindo teu exemplo, ao clicar no botão gravar, você vai invocar um actionListener.
Este listener deve ter uma instância da classe controller (PessoaController).
PessoaController, por sua vez, já deve ter uma instância de PessoaDAO e o resto é intuitivo: cada botão chama uma actionPerformed que chama um método na cotnroller que chama os métodos no DAO.

J

Opa, obrigado pelas dicas Darlan, não fiz usando listeners, consegui de uma outra forma, não sei se a mais correta. Mas sua resposta ja me meu um norte

valeu

Criado 3 de agosto de 2018
Ultima resposta 6 de ago. de 2018
Respostas 2
Participantes 2