Вопрос о влиянии setFlushMode на внедренный управляемый контейнером EntityManager - PullRequest
1 голос
/ 18 августа 2011

Я использую EJB 3.1 и у меня есть Session Bean без состояния, в который я внедряю EntityManager. Один из методов EJB вызывает entityManager.setFlushMode (FlushModeType.COMMIT).

Два вопроса:

1) Я предполагаю, что это влияет на все EJB, которые являются частью этой транзакции. Так, например, если этот SSB вызывает другой метод в другом EJB, который использует атрибут транзакции REQUIRED и этот EJB также внедряет EntityManager, то этот entityManager, используемый этим методом, также будет в режиме сброса COMMIT. Это правда или вам нужно явно устанавливать режим сброса в вызываемом методе, даже если он находится в том же TX?

2) Повлияет ли установка flushMode на менеджере сущностей на других менеджеров сущностей для того же PU, введенного в другие EJB, но используемого в других транзакциях? Я бы предположил, что нет.

Thnx.

1 Ответ

3 голосов
/ 18 августа 2011

Ваши предположения верны.Да, setFlushMode в введенном EntityManager влияет на все EM для PU в одной и той же транзакции.Нет, это не повлияет на EM в других транзакциях.Смотрите этот ответ: EJB 3.1 Транзакция, EntityManager

...