Можете ли вы получить доступ к EntityManager из EntityListeners? - PullRequest
4 голосов
/ 03 декабря 2008

Мне известно, что спецификация JSR-000220 Enterprise JavaBeans 3.0 Final Release (постоянство) гласит:

"Как правило, переносимые приложения не должны вызывать операции EntityManager или Query, получить доступ к другим экземплярам сущности или изменить отношения в методе обратного вызова жизненного цикла. "

Это выглядит крайне ограниченно. У нас есть ситуация, в которой мы хотели бы получить доступ к EntityManager из EntityListener.

Кто-нибудь сталкивался с какими-либо неблагоприятными последствиями / неприятностями при использовании EntityManager из слушателя на Jboss / Glassfish или на любом другом сервере приложений?

1 Ответ

2 голосов
/ 26 июля 2009

На самом деле вы правы. В спецификации JPA говорится об этом, и в этом случае вместо этого предлагаются прослушиватели EJB (или Spring AOP в среде не Java EE).

Я не знаю смысла вашего слушателя. Но только ставьте сквозные вопросы, такие как регистрация, аутентификация и маршрутизация внутри него. Справочная документация Hibernate, например, использует прослушиватели для аудита журнала всех изменений объекта. Это может быть сделано слушателями EJB (или Spring AOP в среде, отличной от Java EE), когда слушатели EJB могут использовать диспетчер сущностей. Спецификация Java EE позволяет это. Следовательно, EJB-слушатели используют один и тот же ENC, используемый его целевым EJB-компонентом, и, таким образом, также используют один и тот же контекст постоянства (диспетчер сущностей).

Если хотите, посмотрите мой профиль. У меня много проблем, связанных с ORM.

С уважением,

...