Alteração no banco de dados e atualizar da entidade - Resolvido

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();
	}
} 

https://www.concretepage.com/java/jpa/jpa-entitymanager-and-entitymanagerfactory-example-using-hibernate-with-persist-find-contains-detach-merge-and-remove

Obrigado @javaflex.

Funcionou.

Não sabia