Ola, ao usar a JPA eu faço assim:
Abro o EntityFactory no começo da aplicaçao e fecho no final.
O EntityManager, q eh usado para fazer as pesquisas, inserir, deletar eu crio e fecho, resumindo faco assim:
EntityManagerFactory factory = Persistence.createEntityManagerFactory("teste");
(...)
EntityManager em = factory.createEntityManager();
List<Categoria> list = em.createQuery("SELECT c FROM Categoria c").getResultList();
em.close();
(...)
(...)
EntityManager em = factory.createEntityManager();
Categoria cat = em.find(...);
em.close();
(...)
factory.close();
Ao fazer uns testes, percebi q se instaciar o EntityManager uma so vez, e usalo em todo o programa, q nem o factory, e fecha-lo no final, consigo uma grande diferenca de performance!
Ou seja, eh muito mais rapido usar um EntityManager para fazer tudo!
Agora eu pergunto, posso fazer isso? Ou devo abrir e fechar toda hora q for fazer uma pesquisa, etc?
Vlw!