Boa noite a todos, estou fazendo um CRUD usando MVC, e tenho que fazer com que o programa funcione com uma DAO feita com SQL e com uma DAO feita com listas de array em memória (Não simultaneamente, quando alternar de uma DAO para outra o programa tem que funcionar do mesmo jeito ) minhas duvidas são as seguintes. Posso instanciar a DAO na classe principal? Tenho 3 tabelas no banco de dados, tenho que fazer uma DAO e um controlador para cada tabela? Para o programa funcionar com as duas DAOs é só nomear os métodos de ambas igualmente certo? Controlador é a mesma coisa que FACADE? O construtor pode ficar no controlador?
Segue meu código:
TO (Não vou colocar os geters e seters para não ficar gigante…):
package TO;
public class Professor {
private Integer rg;
private String nome;
private String titulo;
DAO:
public class ConsultasProfessor extends Conexao {
public boolean inserir(Professor pro) {
PreparedStatement ps = null;
Connection con = getConexao();
String sql = "INSERT INTO professor (nome, rg, titulo) VALUES (?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, pro.getNome());
ps.setInt(2, pro.getRg());
ps.setString(3, pro.getTitulo());
ps.execute();
return true;
} catch (SQLException e) {
System.err.println(e);
return false;
} finally {
try {
con.close();
} catch (SQLException e) {
System.err.println(e);
}
}
}
Controler:
public class CtrlProfessor implements ActionListener {
private Professor professor;
private ConsultasProfessor consultaprofessor;
private frmProfessor frmprofessor;
public CtrlProfessor(Professor professor, ConsultasProfessor consultaprofessor, frmProfessor frmprofessor) {
this.professor = professor;
this.consultaprofessor = consultaprofessor;
this.frmprofessor = frmprofessor;
this.frmprofessor.btnBuscar.addActionListener(this);
this.frmprofessor.btnModificar.addActionListener(this);
this.frmprofessor.btnDeletar.addActionListener(this);
this.frmprofessor.btnSalvar.addActionListener(this);
this.frmprofessor.btnLimpar.addActionListener(this);
}
public void iniciar() {
frmprofessor.setTitle("Professor");
frmprofessor.setLocationRelativeTo(null);
}
public void limpar() {
frmprofessor.txtNome.setText("");
frmprofessor.txtRG.setText("");
frmprofessor.txtTitulo.setText("");
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == frmprofessor.btnSalvar) {
professor.setNome(frmprofessor.txtNome.getText());
professor.setRg(Integer.parseInt(frmprofessor.txtRG.getText()));
professor.setTitulo(frmprofessor.txtTitulo.getText());
if (consultaprofessor.inserir(professor)) {
JOptionPane.showMessageDialog(null, "Salvo com sucesso!");
limpar();
} else {
JOptionPane.showMessageDialog(null, "Erro ao salvar, consulte o log!");
limpar();
}
}
Classe principal:
public class ProjetoMvc {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Professor professor = new Professor();
frmProfessor frmprofessor = new frmProfessor();
ConsultasProfessor consultaprofessor = new ConsultasProfessor();
CtrlProfessor ctrlprofessor = new CtrlProfessor(professor, consultaprofessor, frmprofessor);
ctrlprofessor.iniciar();
frmprofessor.setVisible(true);
}
}
e a view só tem o frame.