Hibernate, questão rápida

3 respostas
luciano_castilho

Olá a todos! :slight_smile:

Questão rápida: Em quais operações (insert, update, delete, select) implementadas usando os objetos do Hibernate deve-se usar o session.flush() ?
Este método funciona como um tipo de commit ou possui alguma outra função?

Mui grato.

3 Respostas

ricardolecheta

o hibernate só manda tudo pra base quando vc fecha a session… ou faz session.conection.commit…

entao digamos que vc fez varios inserts, deletes… etc… o hibernate nao vai fazer nada até vc fazer session.close()

entao o flush() server para o hibernate sincronizar o estado atual dos objetos com o banco, antes de fazer session.close

luciano_castilho

OK, mas então o session.flush() só deverá ser utilizado nas operações de insert/update/delete, pois envolvem comitar o banco? Ou também nas operações de retrieve?

ricardolecheta

pode em qualquer caso…mas o flush diz para o hibernate: “execute os SQL ´s que estão na fila agora :-)”…

no caso de recuperar um objeto do banco, por exemplo…

Usuario usuario = session.load(10)

usuario.setNome(“outro nome”)

Sabe que no fim das contas o hibernate vai fazer um update., pq vc alterou o nome. Mas ele só faz isso no fim da transação. Para fazer agora basta chamar o session.flush…

Entao o flush é mais para insert, delete, cascade… pq SELECT sempre é na hora… a não ser que venha aquela outra história de lazy=true, proxies, etc…

Criado 28 de dezembro de 2004
Ultima resposta 28 de dez. de 2004
Respostas 3
Participantes 2