GlassFish 3.1下的JPA和DAO实现

时间:2012-04-03 08:32:47

标签: java-ee jpa-2.0 glassfish-3

我的应用程序正在使用JPA,并部署在GlassFish 3.1下(因此使用EclipseLink)。它运行正常,但我现在正在尝试使用DAO实现。

我找到了that article。但似乎没有使用注入持久化上下文。因此,我有一个实体类,一个无状态EJB类和一个persistence.xml文件。在我的EJB中@PersistenceContext(name=...)注释。就像它正在发挥作用。

现在我添加一个DAO接口和一个JPA DAO类(实现了交互接口)。在我的JPA DAO中,我正在尝试注入持久化上下文,但它不起作用。没有例外,但仍然是空的。

我该怎么办?

如果用GlassFish不可能做到这一点,我的第一个想法就是将实体管理器传递给DAO。它有效,但是它很“好”吗?

第二个想法是像无状态bean一样实现JPA DAO并将其注入我的EJB中。它也在工作,但......?是不是一个好主意?

1 个答案:

答案 0 :(得分:1)

除非对象由容器管理,否则不能注入PersistenceContext。它必须是@Stateless@Singleton或类似的东西。您还可以使用CDI(JSR-299)来进行bean容器管理并使注入工作。或者你可以使用Spring,就像那篇与你谈到的文章一样。