Выполняет ли каждый раз выполнение EntityManagerFactory.createEntityManager () новый экземпляр? - PullRequest
0 голосов
/ 10 июня 2010

Выполняет ли каждый раз выполнение EntityManagerFactory.createEntityManager () новый экземпляр? или он возвращает кэшированную копию одного и того же EntityManager каждый раз?

Ответы [ 3 ]

2 голосов
/ 10 июня 2010

Javadoc однозначен:

Создайте новый управляемый приложением EntityManager.Этот метод возвращает новый экземпляр EntityManager каждый раз, когда он вызывается.

0 голосов
/ 10 июня 2010

Второй ответ Скаффмана, вот выдержка из спецификации JPA 1.0:

5.9.2 Обязанности провайдера

Провайдер не знает о различии между областью транзакциии расширенные контексты постоянства.При запросе он предоставляет диспетчеры сущностей контейнеру и регистрирует уведомления о синхронизации для транзакции.

  • Когда вызывается EntityManagerFactory.createEntityManager, поставщик должен создать и вернуть новый диспетчер сущностей ,Если транзакция JTA активна, поставщик должен зарегистрироваться для уведомлений о синхронизации с транзакцией JTA.
0 голосов
/ 10 июня 2010

EntityManagerFactory возвращает новый экземпляр EntityManager при каждом вызове EntityManagerFactory.createEntityManager ().

Если вы выполните ...

emf = Persistence.createEntityManagerFactory("basicPU");
 for (int i = 0 ; i<10; i++){
     System.out.println(em = emf.createEntityManager());
 }

Это печатает:

org.apache.openjpa.persistence.EntityManagerImpl@18105e8
org.apache.openjpa.persistence.EntityManagerImpl@9bad5a
org.apache.openjpa.persistence.EntityManagerImpl@91f005
org.apache.openjpa.persistence.EntityManagerImpl@1250ff2
org.apache.openjpa.persistence.EntityManagerImpl@3a0ab1
org.apache.openjpa.persistence.EntityManagerImpl@940f82
org.apache.openjpa.persistence.EntityManagerImpl@864e43
org.apache.openjpa.persistence.EntityManagerImpl@17c2891
org.apache.openjpa.persistence.EntityManagerImpl@4b82d2
org.apache.openjpa.persistence.EntityManagerImpl@179d854
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...