Внедрить EJB в объект домена с помощью Java EE 6 - PullRequest
10 голосов
/ 08 января 2010

Как я могу внедрить EJB в объект домена (сущность JPA) с помощью Java EE 6?

Ответы [ 3 ]

11 голосов
/ 14 августа 2010

В Java EE 6 CDI расширяет концепцию управляемого компонента на что угодно, и EJB можно внедрить в управляемый компонент CDI (используя аннотацию @Inject). Но хотя взаимодействие между JPA и CDI было рассмотрено, оно не стало частью спецификации Java EE 6. Другими словами, внедрение в объект JPA невозможно.

Смотри также

4 голосов
/ 08 января 2010

Внедрение клиента EJB3 применяется к «управляемым классам», таким как сервлеты и EJB (и код страницы JSF и т. Д.).

Я думаю, что объекты JPA не управляются в этом смысле. Поэтому я думаю, что вы вернетесь к методам, предшествующим EJB3, выполните поиск JNDI и т. Д.

Однако, как было отмечено, в вашей иерархии обязанностей может быть некоторая путаница, если вам нужно это сделать. Было бы интересно, если бы вы опубликовали вопрос о вашем общем дизайне, чтобы мы могли подумать о проблемах дизайна. Моя позиция по умолчанию заключается в том, что EJB-объекты используют объекты домена JPA, а объекты JPA не используют EJB-объекты.

1 голос
/ 08 января 2010

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

Это не значит, однако, что вы не должны этого делать.

Вы знаете, для чего предназначена ваша система и с какими другими системами она взаимодействует. Эти знания повлияют на решение, которое я придумаю.

См. Активная запись ссылка. Как я и имел в виду в своем комментарии, обычно маленькие системы выбирают этот маршрут.

...