Реализация JPA и DAO в GlassFish 3.1 - PullRequest
0 голосов
/ 03 апреля 2012

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

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

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

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

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

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

1 Ответ

1 голос
/ 03 апреля 2012

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

...