HIbernate deve refazer consulta no BD.  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
joaoorso
JavaTeenager
[Avatar]

Membro desde: 23/11/2006 21:48:55
Mensagens: 179
Localização: Curitiba - PR
Offline

Boa tarde.
Bem primeiramente quero pedir desculpas ao moderador caso esteja duplicando o assunto; mas pesquisei e não encontrei o que procurava.
tenho uma consulta em SQL nativo executada da sequinte forma :


O que acontece é que a tabela t005parametro é alterada por um outro sistema; o hibernate não refaz a consulta e pega as informções de seu cache. O que resulta em informações inconsistentes .

Algém sabe como resolver isso ?
Agradeço a todos que responderem.

João Ricardo Orso .
SCJP 5.0.
TSI

----------------------------------------------------------------
Os níveis de visibilidade do Java são: public, default, protected, private e " protected by Chuck Norris ", não tente acessar um atributo com este último modificador.


joaoorso
JavaTeenager
[Avatar]

Membro desde: 23/11/2006 21:48:55
Mensagens: 179
Localização: Curitiba - PR
Offline

Pessoal ... será que deu pra entender o que escrevi ?
Eu quero obrigar o hibernate a fazer a consulta no BD novamente.
Não quero que ele faça a busca dos dados no cache como está ocorrendo.

João Ricardo Orso .
SCJP 5.0.
TSI

----------------------------------------------------------------
Os níveis de visibilidade do Java são: public, default, protected, private e " protected by Chuck Norris ", não tente acessar um atributo com este último modificador.


renanreismartins
GUJ Ranger
[Avatar]

Membro desde: 19/09/2007 15:19:38
Mensagens: 807
Localização: São Paulo - SP
Offline

deu sim amigo, achei interessante seu problema, até procurei rapidamente por uma solucao. sei q o hibernate tem cache de 1o e 2o nivel, bem como query cache... estou acompanhando o topico, vou estudar sobre o assunto caso encontre solucao eu posto aqui.

se vc encontrar, por favor compartilhe


abrassss

http://renanreismartins.blogspot.com/ - Para apaixonados por desenvolvimento de software
[WWW] [MSN]
emanuelCruz
JavaChild
[Avatar]

Membro desde: 18/12/2007 12:42:50
Mensagens: 110
Offline

Tenta isto:

***
Emanuel
joaoorso
JavaTeenager
[Avatar]

Membro desde: 23/11/2006 21:48:55
Mensagens: 179
Localização: Curitiba - PR
Offline

Não ... não Rolou
Implementei esse método com conexão via JDBC (sem usar o Hibernate); só assim consegui fazer funcionar direito.
O ruim é que agora fiquei com duas formas de conexão com o banco no projeto
POG... mas deu certo.

acho que o




deve apenas desabilitar o cache de segundo nível

assim como essas linhas que vão no hibernate.cfg.xml


eu acho ....

This message was edited 2 times. Last update was at 25/06/2009 10:05:04


João Ricardo Orso .
SCJP 5.0.
TSI

----------------------------------------------------------------
Os níveis de visibilidade do Java são: public, default, protected, private e " protected by Chuck Norris ", não tente acessar um atributo com este último modificador.


joaoorso
JavaTeenager
[Avatar]

Membro desde: 23/11/2006 21:48:55
Mensagens: 179
Localização: Curitiba - PR
Offline

Bem ... Vamos Reviver o tópico que a situação é parecida.
Tem uma classe que por motivo de força maior eu faço um insert na mão assim :


e também faço um select na mão assim


O problema é que as vezes quando depois de alterar um bem , vou consulta-lo novamente e ele aparece desatualizado.
Provavelmente devido ao cache do hibernate .
Alguém já passou por isso ?
Se o hibernate não identifica um insert ou update feito na mão . Por qual motivo ele permite que eu o faça ?

João Ricardo Orso .
SCJP 5.0.
TSI

----------------------------------------------------------------
Os níveis de visibilidade do Java são: public, default, protected, private e " protected by Chuck Norris ", não tente acessar um atributo com este último modificador.


renanreismartins
GUJ Ranger
[Avatar]

Membro desde: 19/09/2007 15:19:38
Mensagens: 807
Localização: São Paulo - SP
Offline

amigo acredito que se vc chamar o metodo clear() do obj session de certo

abrassss

http://renanreismartins.blogspot.com/ - Para apaixonados por desenvolvimento de software
[WWW] [MSN]
bKn
Java Ninja

Membro desde: 07/04/2009 15:22:18
Mensagens: 288
Offline

O hibernate identifica o comando, porém fica esperando por outro para que os execute todos de uma vez.
A sessão do hibernate é o cache de primeiro nível, que faz o que eu disse acima.


Este código não está funcionando como deveria. Ao fechar a sessão, o hibernate executaria todos os comandos pendentes na sessão na base de dados. Provavelmente é alguma falha no seu HibernateUtil.
agodinhost
Virtual Machine Man
[Avatar]

Membro desde: 28/03/2006 21:19:16
Mensagens: 590
Localização: RJ, Tijuca
Offline

Estou com um problema semelhante, contudo em uma view. Tenho definido duas entidades, a tabela principal e uma view em cima dessa tabela.
tentei session.evict( MinhaClasse.class) e até o clear e nada, volta sempre o resultado do cache.

achei uma property para o hibernate cfg mas ela desabilita TODO o cache do sistema e isso pode impactar na performance da app.

achei no google isso, http://docs.jboss.org/hibernate/stable/core/reference/en/html/batch.html#batch-statelesssession, que nada mais é que fazer o acesso direto ao banco com o hibernate.

Ainda tentando fazer essa coisa funcionar ...
Que saudades do iBates.

Woody

"The difference between theory and practice is that, in theory, there is no difference between theory and practice".
[WWW] [MSN]
agodinhost
Virtual Machine Man
[Avatar]

Membro desde: 28/03/2006 21:19:16
Mensagens: 590
Localização: RJ, Tijuca
Offline

Funcionou de primeira.Em vez do tradicional HibernateUtils.getCurrentSession() estou usando o perigoso HibernateUtils.getSessionFactory().openStatelessSession() - eu digo perigoso porquê se algum desavisado fizer copy and paste de um método desses e executar alguma mudança na base ele pode melar todo meu cache ne?

Só acho que o hibernate DEVERIA ter alguma configuração pra dizer que eu não quero cache para uma determinada entidade. (ele não tem mesmo?)

Woody

This message was edited 1 time. Last update was at 24/08/2009 21:51:25


"The difference between theory and practice is that, in theory, there is no difference between theory and practice".
[WWW] [MSN]
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team