Fala galera tudo beleza. Galera eu to fazendo um sisteminha de controle de estoque e eu não estou conseguindo compreender a questão dos relacionamentos entre algumas tabelas. Então como o meu sistema já esta um pouco grande fica mais difícil colocar todo código aqui. Então eu resolvir fazer um exemplozinho de um relacionamento entre duas classes para que vocês possam me ajudar é aí se eu conseguir compreender eu consigo resolver o problema lá do meu sistema.
Então nesse exemplo eu tenho duas classes Professor e Turma, um professor pode dar aulas em varias turmas e uma turma só pode ter um professor.
Aqui eu tenho a classe Professor com os gets e sets:
/*
* Created on 11/07/2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package controle.mapeamento;
import java.util.Set;
/**
* @author foguinho
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Professor {
private int codigo;
private String nome;
private int idade;
private Set turmas;
/**
*
*/
public Professor() {
}
/**
* @return Returns the codigo.
*/
public int getCodigo() {
return codigo;
}
/**
* @param codigo The codigo to set.
*/
public void setCodigo(int codigo) {
this.codigo = codigo;
}
/**
* @return Returns the idade.
*/
public int getIdade() {
return idade;
}
/**
* @param idade The idade to set.
*/
public void setIdade(int idade) {
this.idade = idade;
}
/**
* @return Returns the nome.
*/
public String getNome() {
return nome;
}
/**
* @param nome The nome to set.
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* @return Returns the turmas.
*/
public Set getTurmas() {
return turmas;
}
/**
* @param turmas The turmas to set.
*/
public void setTurmas(Set turmas) {
this.turmas = turmas;
}
}
Aqui eu tenho a classe Turma com os gets e sets:
/*
* Created on 11/07/2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package controle.mapeamento;
/**
* @author foguinho
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Turma {
private int codigo;
private String turno;
private Professor professor;
/**
*
*/
public Turma() {
}
/**
* @return Returns the codigo.
*/
public int getCodigo() {
return codigo;
}
/**
* @param codigo The codigo to set.
*/
public void setCodigo(int codigo) {
this.codigo = codigo;
}
/**
* @return Returns the professor.
*/
public Professor getProfessor() {
return professor;
}
/**
* @param professor The professor to set.
*/
public void setProfessor(Professor professor) {
this.professor = professor;
}
/**
* @return Returns the turno.
*/
public String getTurno() {
return turno;
}
/**
* @param turno The turno to set.
*/
public void setTurno(String turno) {
this.turno = turno;
}
}
Aqui eu tenho a classe TesteMain:
/*
* Created on 11/07/2006
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package controle.mapeamento;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
/**
* @author foguinho
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class TesteMain {
private Connection conn;
private boolean connected = false;
private String DRIVER = "com.mysql.jdbc.Driver";
private String URL_STRING = "jdbc:mysql://localhost/test";
private String USER = "r";
private String PASSWD = "";
public void conectar() {
try {
Class.forName(DRIVER);
conn = (Connection) DriverManager.getConnection(URL_STRING, USER, PASSWD);
} catch (ClassNotFoundException ex) {
System.out.println("Driver JDBC não encontrado.\n" + ex);
} catch (SQLException ex1) {
System.out.println("Falha durante o processo de conexão.\n" + ex1);
}
}
public void incluirDadosDoProfessor() {
try {
//prepared statement para inserção
PreparedStatement stmt = (PreparedStatement) conn.prepareStatement("INSERT INTO Professor (codigoProf,nomeProf,idadeProf) values (?,?,?)");
Professor p = new Professor();
p.setCodigo(1);
p.setNome("foguinho");
p.setIdade(16);
// seta os valores
stmt.setInt(1,p.getCodigo());
stmt.setString(2,p.getNome());
stmt.setInt(3,p.getIdade());
// executa
stmt.execute();
stmt.close();
} catch (SQLException ex) {
System.out.println("Falha ao inserir registro.\n" + ex);
}
}
public void incluirDadosDaTurma() {
try {
//prepared statement para inserção
PreparedStatement stmt = (PreparedStatement) conn.prepareStatement("INSERT INTO Turma (codigoTurma,Professor_codigoProf,turnoTurma) values (?,?,?)");
Turma t = new Turma();
// seta os valores
// executa
stmt.execute();
stmt.close();
} catch (SQLException ex) {
System.out.println("Falha ao inserir registro.\n" + ex);
}
}
public static void main(String[] args) {
TesteMain tm = new TesteMain();
tm.conectar();
tm.incluirDadosDoProfessor();
}
}
Nessa classe TestMain eu consigo incluir os dados do professor mais eu não consigo incuir os dados da turma eu já tentei mais eu não sei como é que faz.
Aqui eu tenho o script do banco:
CREATE TABLE Professor (
codigoProf INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
nomeProf VARCHAR(45) NULL,
idadeProf INTEGER UNSIGNED NULL,
PRIMARY KEY(codigoProf)
)
TYPE=InnoDB;
CREATE TABLE Turma (
codigoTurma INTEGER UNSIGNED NOT NULL,
Professor_codigoProf INTEGER UNSIGNED NOT NULL,
turnoTurma VARCHAR(20) NULL,
PRIMARY KEY(codigoTurma),
INDEX Turma_FKIndex1(Professor_codigoProf),
FOREIGN KEY(Professor_codigoProf)
REFERENCES Professor(codigoProf)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
TYPE=InnoDB;
Desde de já agradeço pela atenção e pela paciência e espero que vocês possam me ajudar.