galera, to com uma dúvida aqui
Digamos que eu tenha uma classe Lista, que possui um histórico das alterações que ocorreram nela
public class Lista {
//algumas variáveis de instância
private Long id;
private Historico historico;
}
public class Historico {
private Long id;
private String tipoAcao;
}
E eu tenho o DAO dessa lista
public class ListaDAO {
private Connection connection;
public void add(Lista lista) {
String sql = "INSERT INTO LISTA VALUES (?, ?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "bla"); ps.setString(2, "ble");
ps.executeUpdate();
}
}
minha dúvida é: na hora de salvar o Histórico, eu devo colocar a implementação no método add do ListaDAO, como a seguir:
public void add(Lista lista) {
String sql = "INSERT INTO LISTA VALUES (?, ?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "bla"); ps.setString(2, "ble");
ps.executeUpdate();
String sqlHist = "INSERT INTO HISTORICO VALUES(?)";
PreparedStatement psHist = connection.prepareStatement(psHist);
psHist.setString(1, "bla"); psHist.setString(2, "ble");
psHist.executeUpdate();
}
ou devo devo delegar essa tarefa para o HistoricoDAO?
public void add(Lista lista) {
String sql = "INSERT INTO LISTA VALUES (?, ?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, "bla"); ps.setString(2, "ble");
ps.executeUpdate();
historicoDAO.add(lista.getHistorico());
}
eu prefiro fazer o segundo, mas aí entra uma dúvida minha:
minhas tabelas são assim:
____________ _____________
Lista Historico
____________ _____________
id id_lista
____________ tipoAcao
______________
Sendo que o id_lista na tabela Histórico é uma foreign key para a tabela Lista
Voltando ao código, no meu método em HistoricoDAO
public void add(Historico historico) {
//implementação do método
}
eu vou precisar do id da lista, mas a classe Historico não possui uma referência para a classe Lista
como eu faço então? assim?
classe HistoricoDAO:
public void add(Lista lista,Historico historico) {
//implementação do método
}
mas me parece meio estranho assim, posso estar errado
o que eu quero saber é: o que vocês costumam fazer nessa situação?
desculpem o post longo, mas é uma dúvida que tem aparecido com frequência pra mim, e eu estava precisando descobrir o que fazer