JPA naum ta refletindo alteração no BD  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
rafaelmeireles
JavaTeenager

Membro desde: 13/01/2004 16:12:22
Mensagens: 151
Offline

Pessoal em um ambiente web usando uma aplicação com JPA faço um select no banco normal, ai vou direto no banco e altero uma tupla da tabela e depois rodo a aplicação de novo, naum era para a JPA pegar essa alteração naum?
Um colega meu me mostrou isso, então vim testar na minha maquina onde a config é diferente atres de data source com JTA e tal e o funcionamento foi o mesmo.

Alguem saberia dizer pq ela se comporta assim?

Rafael Meireles
[Email]
hugov
JavaEvangelist

Membro desde: 30/08/2004 14:14:23
Mensagens: 357
Offline

Se entendi bem até parece que algum cache está ativando , e a consulta não está
sendo efetuada na segunda vez.

Vitor Hugo
Analista Desenvolvedor Java
WebLog : http://emdia.wordpress.com/
Skype : hugov_br
[Email] [WWW] [MSN]
rafaelmeireles
JavaTeenager

Membro desde: 13/01/2004 16:12:22
Mensagens: 151
Offline

Se fizer select no banco aparece a linha nova, se a aplicação for iniciada de novo a alteração é mostrada, e se apos um find vc fizer:
Entidade entidade = entitymanager.find(entidade, id);
entidade = entityManager.refresh(entidade);

a alteração aparece tb, a impressão que da é que com o find ele naum vai no banco sei lá é meio estranha, pensava que seria um caso isolado desse meu colega mais aqui a config e totalmente deferente e se comportou da mesma forma.

Rafael Meireles
[Email]
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

Cara não sei qual framework vc esta usando mas o hibernate tem uma sessão onde ele armazena todos os objetos para evitar de ficar indo consultar o banco toda hora....

Num ambiente ideal o usuário nunca teria acesso ao banco de dados a não ser pela aplicação...se vc vai lá na mão e altera vc esta burlando essa idéia....

em todo caso existem métodos da session que resolvem seu caso como session.clean(); session.flush();


ok???

Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
Claudio Nazzari
Debugger
[Avatar]

Membro desde: 18/07/2006 09:59:56
Mensagens: 57
Offline

Voce precisa fazer um commit no JPA... faz assim:


Aonde o getEntityManeger vc substitui pelo seu EntityManager...

-------------------------
Claudio Nazzari
clanazzari@gmail.com
[Email] [MSN]
rafaelmeireles
JavaTeenager

Membro desde: 13/01/2004 16:12:22
Mensagens: 151
Offline

isso é na hora de um find, naum prescisa comitar, agora seguinte, se ele faz isso alterando a base de dados e naum refletindo, quem me garante que quando outra aplicação alterar o banco ou ate a mesma aplicação em um ambiente distribuido alterara ele ira pegar o certo?

Rafael Meireles
[Email]
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

Se vc trabalhar com sistemas distríbuidos não poderá usar essa funcionalidade do hibernate, com certeza.

Porém o hibernate não é um cara engessado tudo nele é configuravel...basta vc procurar na documenteção que tenho certeza q vc irá achar um mode de trabalhar dessa maneira...

Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team