Да, я согласен с NimChimpsky и Qwerky использовать EJB3.x при доступе к БД и использовать один EM на единицу работы.
я естьEntityManagerFactory
для которого я могу создать один (или несколько)EntityManager
экземпляров. Я использую среду сервлета, и у меня есть один объект EntityManagerFactory, подключенный к сервлету (через контекст сервлета), который используется в течение всего срока службы сервлета (и, следовательно, для всех пользователей).
Я могу сделать одно из следующего:
Создайте один EntityManager для всего срока службы моего сервлета (например, для всех пользователей)Создайте по одному для каждого пользователя (чтобы каждый пользователь получал свое в HttpSession)Создайте один запрос HTTP (скажем, создав новый экземпляр и закрыв его в концеdoGet
метод)Что является наиболее подходящим? Значительна ли стоимость создания EntityManager? Если я делаю один общий EntityManager, существует ли единая область транзакции (т. Е. Обновления между независимыми пользователями могут фиксировать другие изменения)?