Estou usando o plugin do Hibernate 4 para o Vraptor, onde ele abre a sessão e a transação no início da requisição e fecha no final, fazendo o commit ou rollback.
Porém, reparei se eu executar operações de save em objetos, e na mesma sessão eu usar o criteria para fazer uma consulta ele faz o “commit” antes dessa chamada pelo plugin do hibernate. É o comportamento normal do hibernate, que para manter confidencialidade dos dados, executa o commit de tudo que foi modificado na sessão para depois realizar a consulta?
O comportamento padrão é fazer flush antes da consulta caso você tenha na fila operações de update/insert/delete.
O que você descreve como commit, não seria apenas um flush?
rafaelob
O flush ele executa o SQL que está na sessão, certo? E o commit, no caso, que também realiza o flush, faz o commit no banco.
Então é isso mesmo, quando chama o list do criteria ele executa o flush, e no caso os objetos que eu modifiquei na sessão serão atualizados no banco, né?
O plugin abre e fecha a transação automatico para vocẽ, simulando o comportamento de um ambiente CMT.
M
maaarkin
eu consigo injetar a session no meu generic dao sem ser pelo construtor?
G
garcia-jj
No vraptor3 a injeção de dependência só funciona pelo construtor.
M
maaarkin
mas no caso de eu ter um webservice que nao passa pelo meu controllador, ele vai para minha classe de regra de negocio, e que depois passa para meu dao, que recebe a Session no construtor, o vraptor vai instanciar? pq pelo que entendi isso so funciona quando o fluxo inicia do controllador.