Как часто мне следует создавать EntityManager ?

У меня есть EntityManagerFactory , для которой я могу создать одну (или несколько) экземпляров EntityManager . Я использую среду сервлетов, и у меня есть одна EntityManagerFactory, подключенная к сервлету (через контекст сервлета), которая используется на протяжении всего времени существования сервлета (и, следовательно, для всех пользователей ).

Я могу сделать одно из следующего:

  • Создайте один EntityManager на время существования моего сервлета (например, совместно используемый всеми пользователями)
  • Создайте один для каждого пользователя (чтобы каждый пользователь получил свой собственный в HttpSession)
  • Создайте один для каждого HTTP-запроса (скажем, с помощью создание нового экземпляра и закрытие его в конце метода doGet )

Какой наиболее подходящий? Является ли значительная стоимость создания EntityManager? Если я использую один общий EntityManager, существует ли одна область транзакции (т.е. обновления между независимыми пользователями могут фиксировать другие изменения)?

27
задан AlBlue 19 November 2010 в 13:56
поделиться