Bom dia a todos!
Estou fazendo um cadastro relativamente simples: dados pessoais e endereço. Escolhi trabalhar com duas tabelas separadas no BD, uma para os dados pessoais e uma para os endereços.
Fazer o INSERT direto no DB é relativamente simples, abro uma TRANSACTION e faço os INSERT nas duas tabelas, se tudo ocorrer bem ele faz o COMMIT e insere os dados. Porém estou com dificuldade de fazer essa lógica no JAVA.
Vi alguns exemplos e confesso não ter entendido, tentando achar algo na documentação JAVA, mas ta difícil, se alguém me ajudar, agradeço!
Vc está usando algum framework no seu projeto?
Boa noite Lucas. Não estou não!..
E como vc está criando a transação? Vc já fez algo?
Bom vou postar aqui o meu método para fazer o INSERT atual.
public void inserirRegistro(ModCadPessoa mod){
String colunas , valores , sql;
colunas = "id_pessoa,nome,sobrenome,cpf, fk_endereco"
valores = "?,?,?,?,?";
sql = "BEGIN TRANSACTION;"
+ "INSERT INTO tbl_nome ("+colunas+") VALUES ("+valores+");"
+ "COMMIT;";
try{
con.conectar();
PreparedStatement ps = con.connection.prepareStatement(sql);
ps.setInt ( 1 , mod.getIdPessoa());
ps.setString ( 2 , mod.getNome());
ps.setString ( 3 , mod.getSobrenome());
ps.setString ( 4 , mod.getCpf());
ps.setInt ( 5 , mod.getFkEndereco());
ps.execute();
ps.close();
con.desconectar();
JOptionPane.showMessageDialog(null , "Cadastro efetuado com sucesso!");
}catch(SQLException e){
con.desconectar();
JOptionPane.showMessageDialog(null , "Erro ao efetuar cadastro: " + e);
}
}
A questão é? Como que eu faria o INSERT do endereço na mesma transação da pessoa? Lembrando que o Endereço é um outro objeto ModCadEndereco
seguindo o mesmo padrão… A questão é que agora como estão em métodos diferentes, se por ventura, um exemplo, a internet cai no meio do processo de gravação eu posso ter os dados da pessoa gravados no BD, mas os dados do endereço não, aí obviamente terei problemas sérios… Se ambos os INSERTS estiverem na mesma TRANSACTION ou no mesmo método com certeza não aconteceria esse problema!..
Espero ter explicado um pouco mais e melhor! 