[Resolvido]Duvida Sobre o Hibernate

2 respostas
Queops82

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.

2 Respostas

L

Bom se vc naum passar os outros valores e setar null neles sera persistido null,naum se preocupe com os dados que serao atualizados preencha td seu objeto,caso seja um update o proprio hibernate vai se encarregar de enviar somente os dados alterados,lembra ele tem uma foto do objeto no contexto portanto ele sabe o que atualizar ou naum.

Queops82

obrigado lgweb.

vc me ajudou bastante com o que falou

Criado 26 de agosto de 2010
Ultima resposta 27 de ago. de 2010
Respostas 2
Participantes 2