Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Загодочный Entity Manager


Автор: antit 10.3.2009, 13:10
Объясните толком пожалуйста, что за объект такой EntityManager...
Почему в одних случаях в сессионом бине  могут использовать создание объекта как 
Код

@PersistenceContext
public EntityManager em;


в других чо-то вроде
Код

@PersistenceUnit EntityManagerFactory emf;


 а затем в методах бина
Код

EntityManager em = emf.createEntityManager();


Как я понял в первом случае это    Container-Managed Entity Managers, а во втором Application-Managed Entity Managers

в каком случае, что нужно использовать непонятно?

Спасибо...

Автор: powerOn 10.3.2009, 13:46
В первом случае если хочешь чтобы транзакциями управлял контейнер (на основе аннотаций на методах EJB).
Во втором если хочешь открывать и закрывать транзакциями вручную.

Автор: antit 10.3.2009, 14:12
Цитата(powerOn @ 10.3.2009,  13:46)
В первом случае если хочешь чтобы транзакциями управлял контейнер (на основе аннотаций на методах EJB).
Во втором если хочешь открывать и закрывать транзакциями вручную.

Спасибо...
Еще вопрос...

Если контейнер может взять на себя управление транзакциями, когда может пригодиться ручное управление ими? 
Если возможно, приведите пожалуйста примеры

Автор: powerOn 10.3.2009, 14:36
Цитата(antit @  10.3.2009,  14:12 Найти цитируемый пост)
Если контейнер может взять на себя управление транзакциями, когда может пригодиться ручное управление ими? 


Ручное управление транзакциями, если мне не изменяет память, может пригодится в EJB с сессионным временем жизни. Для них транзакция может длиться в течении нескольких запросов. Вот тут может понадобиться ручное управление ими.  

Автор: ig78 10.3.2009, 15:02
DEBU PANDA "EJB3 in Action" - там все написано

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)