Faço uma alteração no banco de dados.
Atualizo a página (CTRL + F5).
O valor alterado não é mostrado na tela e nem altera a entidade no JAVA.
Para acontecer a alteração tenho que reiniciar o servidor.
Estranho isto, mas o que pode ser ?
Faço uma alteração no banco de dados.
Atualizo a página (CTRL + F5).
O valor alterado não é mostrado na tela e nem altera a entidade no JAVA.
Para acontecer a alteração tenho que reiniciar o servidor.
Estranho isto, mas o que pode ser ?
Não é estranho, se tiver usando JPA/Hibernate.
Sim estou usando JPA/Hibernate.
Hibernate para dados online é desperdício de recurso. Verifica quando você está abrindo e fechando a sessão do Hibernate. Os dados serão refletidos do banco ao abrir uma nova sessão.
Está assim.
public void getEntityManager() {
if (entityManager == null) {
EntityManagerFactory factory = Persistence
.createEntityManagerFactory("desif");
entityManager = factory.createEntityManager();
}
}
O entityManager só é executado uma vez. Seria isto ?
A criação da factory deve ser executada somente 1 vez e armazenado no escopo da aplicação. Já o entityManager não, deve ser criado a cada requisição HTTP do usuário e ser fechado após ter o resultado pronto em objeto java puro desconectado para responder a requisição HTTP.
Exemplo:
public class JPAUtility {
private static final EntityManagerFactory emFactory;
static {
emFactory = Persistence.createEntityManagerFactory("com.concretepage");
}
public static EntityManager getEntityManager(){
return emFactory.createEntityManager();
}
public static void close(){
emFactory.close();
}
}