Boa tarde à todos !
Estou com uma certa dúvida, estou desenvolvendo uma aplicação para estudos em JSF, a princípio estou começando com as entidades “classes java”
depois as classes “DAO”, ao terminar as classes DAO. Lembrando que minha aplicação é para gerenciamento de provas e trabalhos.
Ao terminar a classe DAO irie para a classe DisciplinaDAO onde tenho os atributos :
private int codigo;
private String nome;
private String tipoAvaliacao;
private Aluno aluno;
private Curso curso;
private Professor professor;
Após inserir os valores das classes Aluno,Curso,Professor no BD, terei que incluir as chaves primárias das classe citadas na tabela disciplina, eis a dúvida agora:
A cada inserção dos atributos das classes Aluno, Curso, Professor tenho que inserir também suas chaves primárias na tabela disciplina, com é possivel fazer assim sendo que os objetos
não estão instanciados por exemplo:
public void adicionar(Disciplina disciplina){
disciplina.getAluno.getCodigo(); // nesse caso o objeto aluno não estaria instanciado
disciplina.getCurso.getCodigo(); // nesse caso o objeto Curso não estaria instanciado
}
--------------------------------------------------------------------------------------------------------
AlunoDAO
public class AlunoDAO extends Conexao {
public boolean adicionar(Aluno aluno) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("INSERT INTO aluno VALUES(?,?,?,?,?,?,?,?,?)");
ps.setString(1, aluno.getNome());
ps.setString(2, aluno.getEndereco());
ps.setString(3, aluno.getTelefone());
ps.setString(4, aluno.getCidade());
ps.setString(5, aluno.getEstado());
ps.setString(6, aluno.getSenha());
ps.setString(7, aluno.getEmail());
ps.setString(8, aluno.getBairro());
ps.setString(9, aluno.getInstituicao());
return ps.execute();
}
public boolean alterar(Aluno aluno) throws SQLException, ClassNotFoundException {
this.pegarID(aluno);
PreparedStatement ps = getPrepareStatement("UPDATE aluno SET nome = ?,endereco = ?,telefone = ?,cidade = ?,estado = ?,email = ?,bairro = ?,instituicao = ? WHERE idaluno = ?");
ps.setString(1, aluno.getNome());
ps.setString(2, aluno.getEndereco());
ps.setString(3, aluno.getTelefone());
ps.setString(4, aluno.getCidade());
ps.setString(5, aluno.getEstado());
ps.setString(6, aluno.getEmail());
ps.setString(7, aluno.getBairro());
ps.setString(8, aluno.getInstituicao());
ps.setInt(9, aluno.getCodigo());
return ps.execute();
}
private void pegarID(Aluno aluno) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("SELECT idaluno FROM aluno WHERE nome = ?");
ps.setString(1, aluno.getNome());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
aluno.setCodigo(rs.getInt("idaluno"));
}
}
}
-------------------------------------------------------------------------------------------------------------------------
ProfessorDAO
public class ProfessorDAO extends Conexao {
public boolean adicionar(Professor professor) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("INSERT INTO professor VALUES(?,?,?,?)");
ps.setString(1, professor.getNome());
ps.setString(2, professor.getTelefone());
ps.setString(3, professor.getEmail());
ps.setString(4, professor.getTitulo());
return ps.execute();
}
public boolean alterar(Professor professor) throws SQLException, ClassNotFoundException {
this.pegarID(professor);
PreparedStatement ps = getPrepareStatement("UPDATE professor SET nome = ?, telefone = ?, email = ?, titulo = ? WHERE codprofessor = ?");
ps.setString(1, professor.getNome());
ps.setString(2, professor.getTelefone());
ps.setString(3, professor.getEmail());
ps.setString(4, professor.getTitulo());
ps.setInt(5, professor.getCodigo());
return ps.execute();
}
public void pegarID(Professor professor) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("SELECT idprofessor FROM professor WHERE nome = ?");
ps.setString(1, professor.getNome());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
professor.setCodigo(rs.getInt("idprofessor"));
}
}
public boolean deletar(Professor professor) throws SQLException, ClassNotFoundException {
this.pegarID(professor);
PreparedStatement ps = getPrepareStatement("DELETE FROM professor WHERE idprofessor = ?");
ps.setInt(1, professor.getCodigo());
return ps.execute();
}
}
--------------------------------------------------------------------------------------------------------------------------
CursoDAO
public class CursoDAO extends Conexao {
public boolean adicionar(Curso curso) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("INSERT INTO curso VALUES(?,?,?)");
ps.setString(1, curso.getNome());
ps.setInt(2, curso.getPeriodo());
ps.setDate(3, curso.getDataProva());
return ps.execute();
}
public void pegarID(Curso curso) throws SQLException, ClassNotFoundException {
PreparedStatement ps = getPrepareStatement("SELECT idaluno WHERE nome = ?");
ps.setString(1, curso.getNome());
ResultSet rs = ps.executeQuery();
if (rs.next()) {
curso.setCodigo(rs.getInt("idcurso"));
}
}
public boolean alterar(Curso curso) throws SQLException, ClassNotFoundException {
this.pegarID(curso);
PreparedStatement ps = getPrepareStatement("UPDATE curso SET nome = ?,periodo = ?,dataProva = ? WHERE = ?");
ps.setString(1, curso.getNome());
ps.setInt(2, curso.getPeriodo());
ps.setDate(3, curso.getDataProva());
ps.setInt(4, curso.getCodigo());
return ps.execute();
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------
DisciplinaDAO
public class DisciplinaDAO extends Conexao{
public boolean adicionar(Disciplina disciplina) throws SQLException, ClassNotFoundException{
PreparedStatement ps = getPrepareStatement("INSET INTO disciplina VALUES (?,?,?,?,?)");
ps.setString(1, disciplina.getNome());
ps.setString(2, disciplina.getTipoAvaliacao());
ps.setInt(3, disciplina.getAluno().getCodigo()); // o codigo no caso virá como nullo como resolver isso?
ps.setInt(5, disciplina.getProfessor().getCodigo());
ps.setInt(6, disciplina.getCurso().getCodigo());
return ps.execute();
}
Como faço para popular esses objetos e ao mesmo tempo os objetos dentro da classe disciplina : aluno,Professor e Curso?
aluno.getCodigo();
curso.getCodigo()
professor.getCodigo()
os getCodigo são as chaves primarias