pessoal tenho uma aplicacao q estou usando tomcat e hibernate ja terminei e na minha maquina funciona perfeitamente qnd comecei a exportar para o servidor comecou a dar os problemas, o banco q estou usando é o postgres, localmente qnd tenho uma interação ele inseri no banco e atualiza na minha sessao normalmente, agora qnd eu faco isso usando o servidor ele salva no banco mas minha sessao nao fica sincronizada com o banco queria saber quais seriam os possiveis problemas para isso acontecer, lembrando q em qualquer insercao q uso depois eu sempre dou um “session.flush()”.
Problema talvez tomcat ou hibernate?
13 Respostas
como assim sua sessao nao fica sincronizada ?
abrassss
Assim diferente do que muitos pensam o hibernate não atualiza o banco na hora,assim o mais correto e para cada operação exista uma sessão,tenta dar um close para você ver se ela não faz tudo que e requisitado ai você tenta outra operação com uma nova sessão.
caso esteja falando besteira por favor me ajudem :roll:
mas ele atualiza o banco, o q nao acontece é a atulizacao do objeto da sessao !
Assim diferente do que muitos pensam o hibernate não atualiza o banco na hora,assim o mais correto e para cada operação exista uma sessão,tenta dar um close para você ver se ela não faz tudo que e requisitado ai você tenta outra operação com uma nova sessão.caso esteja falando besteira por favor me ajudem :roll:
ele atualiza no momento “mais conveniente”.
vc nao precisa de uma sessao por operaçao, o ideal é que realize tudo em uma mesma sessao, até pq assim o hibernate pode otimizar as idas ao banco.
abrasss
sim, mas o q eu nao estou entendendo é o pq de ele esta atualizando no banco e minha sessao pego o objt antigo?
ex : tem um obj com uma propiedade booleana “temCor” ai eu clico no botao para ativar a cor e no banco ele inseri true mas na tela ele ainda continua como false!
esse problema so acontece qnd app fica em um servidor e o banco em outro, pq estava testando na minha maquina ambas no mesmo “local fisico” e nao tinha problema algum!
acabei de ver q esse problema so acontece no IE 8 no firefox e no IE 7 fica blz, pode ser algum problema de seguranca,permissao ?
Se vc chamar o metodo flush no hibernate as alterações que estão em sessão serao sim atualizadas no banco!
Seu objeto está retornando com o estado correto so que só está exibindo errado no IE 8 ? é isso?
Se o estado do seu objeto estiver diferente do estado dos dados em banco, (o banco for o mais atual) utilize o metodo merge().
“Use merge() if you want to merge your modifications at any time without consideration of the state of the session.”
pode ser mas esse problema é so no IE 8 mesmo pq nos anteriores e no firefox ele funciona sem problema !
ta estranho isso cara,
se der posta trechos do codigo.
ta muito esquisito isso, ele esta travando informações na memoria pos eu fecho o IE8 e abro de novo e as informações continuam da mesma foram q estava antes na ultima sessao e no banco esta da forma certa, ou seja ele esta prendendo o os objetos na memoria e qnd qnd volta ele ignora as informações do banco !!! Bizarro eu ate abri um novo toico falando do comportamento do IE8 http://www.guj.com.br/posts/list/0/198980.java#1000169
vc tem certeza que deu CTRL + F5 na pagina né? nao tem nada em cache de browser nao?
sim cara isso ta muito estranho, so acontece no IE8, mas se o banco estiver no mesmo host ele funciona perfeito esquisito de mais deve ser alguma configuração nele só consigo enxergar isso!!!