Устанавливает ли jboss управляемые проблемы параллелизма Entity Manager? - PullRequest
2 голосов
/ 22 декабря 2011

Кажется, что экземпляр Entity Manager jboss управляет и предоставляет прокси для фактической реализации, связанной с контекстом постоянства.

Эта фактическая реализация собирает изоляцию, обеспечиваемую транзакциями JTA (для контекста транзакции).

Это заставляет меня думать, что мне не нужно беспокоиться о проблемах параллелизма при работе с экземпляром прокси.

Может быть, я даже могу кэшировать этот экземпляр прокси, если я решу вместо этого вывести его из поисков JNDIвпрыска контейнера?

Это разумно?

1 Ответ

3 голосов
/ 22 декабря 2011

Контейнер отвечает за сканирование аннотаций @PersistenceContext и внедрение EntityManagers.Он может проксировать экземпляры EntityManager.

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

Однако, если вы введете этот EntityManager, используя @PersistenceContext в среде сервлетов (где важен параллелизм), вы не потокобезопасный.Вы должны использовать @PersistenceUnit вместо этого.Вы можете обратиться к этой части Справочного руководства по JBoss 7 JPA :

Имейте в виду, что менеджер сущностей не должен быть безопасным для потоков (невставьте его в переменную класса сервлета, которая видна нескольким потокам) .

Некоторое время назад я подытожил то, что я знаю о совместном использовании постоянного контекста между транзакциями JTA и прокси EntityManagers контейнером и опубликовал его здесь .Я надеюсь, что вы найдете это полезным.

...