VRaptor + controle de transação

3 respostas
F

Oi pessoal, boa noite

Estou com um problema no controle de transação do VRaptor.

Utilizo o hibenarte no web.xml para que o VRaptor O VRaptor abra a Session e começa uma transação no início da requisição e fecha a Session.

br.com.caelum.vraptor.packages
br.com.caelum.vraptor.util.hibernate

Mas preciso que ele abra a Session cada vez que entrar em um método da controller, pois tenho um método save e um list na controller, mas quando salvo e faço um forward para o list o objeto salvo não vem pois não foi fechada a transação ainda. Depois que chamo o método list novamente o objeto salvo aparece.

Como abrir uma Seesion por cada método da controller??

3 Respostas

Lucas_Cavalcanti

troque o forward por um redirect… é mais adequado após um POST que cria um objeto. isso resolve o seu problema.

F

Lucas, boa noite

  1. Não entendi bem esta diferença e porque com o result.redirectTo funciona?..Poderia explicar melhor?
    ? result.forwardTo(?/uma/outra/pagina.jsp?): redirecionamento do lado do servidor para a página especi?ficada.
    ? result.redirectTo(?/uma/outra/pagina.jsp?): redirecionamento do lado do cliente para a página especi?ficada.

  2. No capitulo 16 (Integrando VRaptor e Spring) da apostila do VRaptor. Qual a vantagem de fazer essa implementação?

  3. Qual a vantagem de usar o [br.com.caelum.vraptor.util.hibernate] pois o mesmo abre a transação a cada request, sendo que nem todos os métodos da controller precisa de uma transação? Não seria melhor abrir uma transação para cada método da controller?

Lucas_Cavalcanti

no forward, tudo fica do lado do servidor… no redirect, a requisição volta pro cliente e ele faz automaticamente uma nova requisição pro endereço informado.

a vantagem de se integrar com o Spring é que já tem um monte de coisa pronta pra ele (transaçoes, segurança, conexões, mensagens, jobs, etc)

a vantagem de usar o pacote do hibernate do vraptor é vc não precisar ficar se preocupando com onde abrir e fechar transaçoes toda hora. Mas isso é uma abordagem simplista… se vc quiser um controle mais fino pode usar o do spring.

Criado 8 de novembro de 2012
Ultima resposta 10 de nov. de 2012
Respostas 3
Participantes 2