Boa noite a todos
Bem me deparei com um probleminha ou duvida na hora que foi querer dar update e dar delete em duas entidades, eu quando criei o DAO do Hibernate eu fiz tres metodos diferentes um para inserir outro pra dar update e o ultimo pra dar delete eu criei desse jeito os tres metodos.
public class DAO<Class> {
private final Session sessao;
private Transaction transacao;
private Class instancia;
public DAO(Class instancia) {
sessao = Util.getSession();
this.instancia = instancia;
}
private Transaction comecarTransacao() {
return sessao.beginTransaction();
}
private Transaction terminarTransacao() {
return (Transaction) sessao.close();
}
public void insert() {
try {
transacao = comecarTransacao();
sessao.save(instancia);
transacao.commit();
transacao = terminarTransacao();
} catch (HibernateException ex) {
transacao.rollback();
}
}
public void update() {
try {
transacao = comecarTransacao();
sessao.update(instancia);
transacao.commit();
transacao = terminarTransacao();
} catch (HibernateException ex) {
transacao.rollback();
}
}
public void delete() {
try {
transacao = comecarTransacao();
sessao.delete(instancia);
transacao.commit();
transacao = terminarTransacao();
} catch (HibernateException ex) {
transacao.rollback();
}
}
}
Bem pelo que entendi quando se usa o método save(Object o) da interface Session, ele pega o objeto passado por parâmetro e gera um id para o campo mapeado como id. A partir daí pode-se dizer que ele está gerando o código automático e inserindo um novo registro com os valores setados.
Já o método update(Object o) vai realizar uma atualização do objeto que você está passando por parâmetro. E o que vai identificar o objeto como único em um banco de dados é o campo id.tendo que passar todos os dados referentes a instância que quero atualizar, e o mesmo se eu for usar delete(Object o), ai que esta minha duvida, eu tenho que passar todos os dados da instancia que desejo mexer sendo para atualizar como para excluir ou pode passar só id para poder identificar a instancia correto?
no caso do update passaria o dado que vou atualizar e o id, o resto se eu não passar nenhum valor vai ser alterado para null ou vai manter como esta?
Agradeço desde ja a ajuda.