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.
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.
Giulliano
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???
Claudio_Nazzari
Voce precisa fazer um commit no JPA… faz assim:
getEntityManager().getTransaction().begin();
/* Insira aqui os metodos de persistencias. */
getEntityManager().getTransaction().commit();
Aonde o getEntityManeger vc substitui pelo seu EntityManager…
R
rafaelmeireles
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?
Giulliano
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…