Java 我可以从JPABean获得对管理它的EntityManager实例的引用吗?

Java 我可以从JPABean获得对管理它的EntityManager实例的引用吗?,java,jakarta-ee,jpa,Java,Jakarta Ee,Jpa,这个问题基本上概括了这一点 Play框架具有JPA bean继承自的JPABase类。这个类有一个名为em()的方法,它返回bean的entityManager实例。在普通JPA中是否有类似的东西?好的,没有。我会觉得这很可疑。JPA实体应该在持久层之外是POJO可用的,在持久层中JPA类甚至不在类路径中。在那些POJO中暴露EntityManager对我来说似乎是错误的。好吧,不。我会发现这很有问题。JPA实体应该在持久层之外是POJO可用的,在持久层中JPA类甚至不在类路径中。在这些POJO

这个问题基本上概括了这一点


Play框架具有JPA bean继承自的JPABase类。这个类有一个名为em()的方法,它返回bean的entityManager实例。在普通JPA中是否有类似的东西?

好的,没有。我会觉得这很可疑。JPA实体应该在持久层之外是POJO可用的,在持久层中JPA类甚至不在类路径中。在那些POJO中暴露EntityManager对我来说似乎是错误的。

好吧,不。我会发现这很有问题。JPA实体应该在持久层之外是POJO可用的,在持久层中JPA类甚至不在类路径中。在这些POJO中公开EntityManager对我来说似乎是错误的。

看起来Play框架实现了允许您直接在bean中进行持久化操作的模式。这是完全可以接受的,您可以实现类似的解决方案

然而,一旦您选择了这种方法,您将无法获得POJO的好处。例如,如果您的应用程序具有n层体系结构,则此解决方案可能不是最佳替代方案

无论如何,看看源代码,它是免费的!

看起来Play框架实现了允许您直接在bean中进行持久化操作的模式。这是完全可以接受的,您可以实现类似的解决方案

然而,一旦您选择了这种方法,您将无法获得POJO的好处。例如,如果您的应用程序具有n层体系结构,则此解决方案可能不是最佳替代方案

无论如何,看看源代码,它是免费的!

谢谢你的回答,我也这么怀疑。不能访问EntityManager似乎是非常有限制的,例如,我可以从bean本身创建一个新的相关对象(而不必创建一个全新的EntityManager)。例如,如果我有一个“company”对象,我希望有一个名为“createEmployee()”的方法,该方法将创建并持久化一个相关的Employee对象。从bean的上下文来看,我似乎无法做到这一点。谢谢你的回答,我也这么怀疑。不能访问EntityManager似乎是非常有限制的,例如,我可以从bean本身创建一个新的相关对象(而不必创建一个全新的EntityManager)。例如,如果我有一个“company”对象,我希望有一个名为“createEmployee()”的方法,该方法将创建并持久化一个相关的Employee对象。从bean的上下文来看,我似乎无法做到这一点。