JPA - Consulta não retorna valores do banco de dados atualizado

Olá amigos,
Estou tentando fazer uma consulta usando o javax.persistence.Query, que me retorna uma lista, porém essa lista não com os valores atualizados no banco de dados. Eu tenho um outro sistema legado (que usa JDBC) que grava e altera dados nesse banco, e meu sistema usando JPA lê essas alterações. A alteração feita pelo legado não fica visível ao sistema usando JPA. Somente quando o contêiner é reiniciado que as alterações são vistas pelo sistema usando JPA.
Alguma sugestão?

Sávio

vc não tem configuração de cache no seu persistence.xml?

com toplink vc pode forçar o sistema buscar sempre os dados quentes do banco, é só usar o setHint. Por exemplo:

Query query = em.createQuery(ConstantesQueries.MEU_SQL).setHint("toplink.refresh", "true");
não considero uma boa prática… mas pode te ajudar a validar o que pode estar acontecendo.

Bom dia Colegas !

palmadias:

Qual seria uma boa pratica neste caso ?
Pois acho que grande parte dos sistemas tem a necessidade de trabalhar com dados válidos… quero dizer os que estão guardados no banco.

Desculpe a ignorancia… mas com o uso de cache o sistema visualiza dados que estão na memória, sem considerar as ultimas alterações realizadas no banco por outro usuário ? Isso tem como finalidade dar mais velocidade ?

[]s

Bom, sendo boa prática ou não, o setHint funcionou no meu caso :slight_smile:

há situações que trabalhar com cache é de fundamental importância, principalmente qdo nos referimos a requisitos não-funcionais.

Usar ou não cache é um ponto a ser definido pela área de arquitetura de cada sistema, sempre levando em conta a criticidade das informações com relação ao negócio em questão.

Sim… muitas vezes o cache aumenta e muito a performance do sistema… mas em contrapartida ele pode ocultar os dados “quentes” do banco. Por isso, qdo for implementar (ou reutilizar) um modulo de cache, analise muito bem o seu uso e a sua necessidade.

Framework de gerenciamento de cache disponibilizam uma série de recursos que permitem gerenciar a utilização do cache, como por exemplo o tempo de vida do objetos no cache, o o numere de dados armazenados em cache, entre outros.

abraços.

[quote]Qual seria uma boa pratica neste caso ?
Pois acho que grande parte dos sistemas tem a necessidade de trabalhar com dados válidos… quero dizer os que estão guardados no banco. [/quote]

Acredito que o seu persistence.xml nao esteja configurado adequadamente… por isso o framework de implementação do JPA, no saco o toplink, não esta retornando os dados atualizados do banco.

Usar o setHint deixa a sua aplicação dependente do toplink… caso vc precise mudar um dia para Hibernate, por exemplo, esse hint não funcionará na implementação hibernate.

abraços.