2012-04-03 2 views
0

Мое приложение использует JPA и развернуто под GlassFish 3.1 (так используя EclipseLink). Он работает нормально, но теперь я пытаюсь использовать реализацию DAO.JPA и DAO в соответствии с GlassFish 3.1

Я нахожу that article. Но, похоже, он не работает с инъекцией контекста персистентности. Таким образом, схематически у меня есть класс сущностей, класс без статуса EJB и файл persistence.xml. В моей EJB аннотация @PersistenceContext(name=...). Как будто это работает.

Теперь я добавляю DAO-интерфейс и класс JPA DAO (реализующий интерфейс). В моем JPA DAO я пытаюсь внедрить контекст персистентности, но он не работает. Исключено, но остается нулевым.

Как я могу это сделать?

Если это невозможно сделать с помощью GlassFish, моя первая идея состояла в том, чтобы передать entitymanager в DAO. Он работает, но «хорошо»?

Вторая идея, реализовать JPA DAO, как фаза без гражданства, и ввести его в свой EJB. Он также работает, но ...? Это хорошая идея или нет?

+0

Потратьте минутку, чтобы убедиться, что вы приняли ответы на свои вопросы: http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work – Jim

+0

?? Вы имеете в виду другие вопросы? Хорошо, но нельзя принимать ответы, если ответов нет или ответ не отвечает на мой вопрос. – tweetysat

ответ

1

Вы не можете вставлять PersistenceContext, если объект не управляется контейнером. Это должно быть @Stateless или @Singleton или что-то в этом роде. Вы также можете использовать CDI (JSR-299), чтобы сделать контейнер с контейнером и получить инъекцию для работы. Или вы можете использовать Spring, как и эту статью, о которой вы говорили.

+0

Также см. Http://stackoverflow.com/questions/2021370/ejb-3-1-ejb-injection-into-pojo – Jim

+0

Хорошо, спасибо. Я не видел, чтобы статья использовала весну ... Но это хороший способ сделать дао без гражданства? Я читал некоторых людей (даже на этом форуме), говоря, что это не очень хорошая идея. – tweetysat

+0

Всегда есть дискуссия о том, как использовать DAO. Я склонен соглашаться с Адамом Биеном, что, как правило, они вам не нужны с EJB 3.x. http://www.adam-bien.com/roller/abien/entry/jpa_ejb3_killed_the_dao http://www.adam-bien.com/roller/abien/entry/you_should_dao_if http://www.adam-bien.com/ Ролик/abien/запись/daos_aren_t_dead_but – Jim

Смежные вопросы