Boa tarde Marcos,
Que bom a solução que te dei ter ajudado a resolver o problema.
A desvantagem que vejo nesta abordagem é que sempre que você for realizar alguma transação com o banco você obrigatoriamente terá que abrir a fábrica e fechá-la, o que tira de certa forma a ideia de manter a fábrica como estática.
Um design-pattern que acredito resolver este problema seria o Singleton, aonde você colocaria antes de instanciar o EntityManager a checagem que verifica se a Fábrica já esta aberta. A abordagem seria algo próximo disto.
private static EntityManagerFactory entityManagerFactory;
private EntityManager entityManager;
public EntityManager getEntityManager() {
if (entityManagerFactory == null) {
entityManagerFactory = Persistence.createEntityManagerFactory("financas-postgres");
}
return entityManagerFactory.createEntityManager();
}
Desta forma você vai garantir que sempre só exista uma instância da Fábrica e evita que a classe tente sempre recriar a instancia a cada vez que ela é executa.
Desta forma, você pode colocar um método para fechar a Fábrica somente quando a sua aplicação for finalizada.
Espero estar ajudando para o seu conhecimento.