[quote=Jackye]
Este construtor vazio e outro cheio eu coloco em qual das duas? Na de cadastro/Atualização (É assim que chamo meu formulário)?[/quote]
Exato. Na “cadastro/atualização”, ou seja lá como você vai chamar essa classe.
[quote=Jackye]A propósito, é nesse botão salvar que tenho:
try {
cadastrarLivro(new Livro());
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao cadastrar! Causa: " + e);
}
Preciso modificá-lo para que ele diferencie se estou fazendo um save ou um update. Tem como?
Acha que isso é viável? Existe uma maneira mais fácil de se fazer isso?[/quote]
Bom, se eu não me engano, você está usando o Hibernate, né?
Se estiver, você pode fazer a chamada do método saveOrUpdate se sua Session. Assim, ele salva ou atualiza o seu objeto, não sendo necessário criar dois métodos diferentes para cada operação.
[code]public class ServicosLivros {
public salvarLivro(Livro livro) throws HibernateException {
Session session = HibernateUtil.getSession();
session.saveOrUpdate(livro);
session.close();
}
}
//Ao salvar…
try {
ServicosLivros servicosLivros = new ServicosLivros();
servicosLivros.salvarLivro(livro);
}
catch (HibernateException hibernateException) {
hibernateException.printStackTrace();
}
catch (Exception generalException) {
generalException.printStackTrace();
}
[/code]
Caso não esteja, siga a ideia do nosso amigo Bertan: verifique se o objeto passado contém o ID preenchido. Se sim, você atualiza. Caso contrário, você insere.
[code]public class ServicosLivros {
public salvarLivro(Livro livro) throws SQLException {
if (livro.getID() != 0)
atualizarLivro(livro);
else
inserirLivro(livro);
}
private void atualizarLivro(Livro livro) throws SQLException {
// Código para UPDATE...
}
private void inserirLivro(Livro livro) throws SQLException {
// Código para INSERT...
}
}
//No botão, segue o mesmo princípio acima.[/code]
Espero ter ajudado,
fique com Deus!