Dúvida Plugin Hibernate 4 - Vraptor - Transaction.commit()

Pessoal,

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?

Att

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?

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é?

Essa dúvida era proveniente de uma outra, http://www.guj.com.br/java/288430-problema-com-constraintvalidationexception-index-unique-com-2-colunas-no-hibernate, se você tiver alguma ideia para me ajudar a solucionar isso eu agradeceria!

Att,

Flush somente executa os comandos no banco. Commit “salva” as alterações no banco, ficando acessível para todas as sessões.

Ainda não lí a outra thread, porém o flush dispara antes as validações do bean validator. Vou dar uma olhada na thread e qualquer coisa respondo lá.

como abrir uma transacao a partir de um determinado metodo?

o que você está usando? JPA, hibernate? algum plugin respectivo do vraptor?

estou usando hibernate, o plugin do vraptor é o do garcia-jj - https://github.com/garcia-jj/vraptor-plugin-hibernate4

O plugin abre e fecha a transação automatico para vocẽ, simulando o comportamento de um ambiente CMT.

eu consigo injetar a session no meu generic dao sem ser pelo construtor?

No vraptor3 a injeção de dependência só funciona pelo construtor.

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.