Должен ли я создавать и закрывать EntityManagerFactory в каждой функции? или я должен создать его, когда приложение запускается и закрывается при закрытии приложения? Как я могу это достичь?EntityManagerFactory для каждой функции?
Например:
У меня есть две функции:
Функция, которая получает объекты из базы данных:
private List<SomeItems> getItems() {
List<SomeItems> resultList = new ArrayList<SomeItems>();
entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
TypedQuery<SomeItems> query = entityManager.createQuery(
"select n from SomeItems n", SomeItems.class);
resultList = query.getResultList();
entityManager.getTransaction().commit();
entityManager.close();
entityManagerFactory.close();
return resultList;
}
Функция, которая получает только имя деталей:
private List<String> getItemsName() {
List<String> resultList = new ArrayList<String>();
entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
TypedQuery<String> query = entityManager.createQuery(
"select n.name from SomeItems n", String.class);
resultList = query.getResultList();
entityManager.getTransaction().commit();
entityManager.close();
entityManagerFactory.close();
return resultList;
}
Как следует Я улучшаю это?
Я бы ожидал, что ВСЕ JPA-документы для каждого поставщика JPA упомянут о том, что EMF стоит дорого, в то время как EM дешево. Если в документах вашего провайдера не говорится, что тогда вы предлагаете вам поднимать проблему на них –