您可以从EntityListeners访问EntityManagers吗?

我知道JSR-000220 Enterprise JavaBeans 3.0最终版本(持久性)规范指出:

“通常,可移植应用程序不应调用EntityManager或Query操作,访问其他实体实例或修改生命周期回调方法中的关系。”

这看起来非常严格。 我们有一种情况,我们想从EntityListener中访问EntityManager。

当在Jboss / Glassfish的监听器或任何其他应用程序服务器上使用EntityManager时,有没有人遇到任何不利影响/ pitfulls?

事实上,你是对的。 JPA规范说它,在这种情况下,它建议EJB监听器(或非Java EE环境中的Spring AOP)。

我不知道你的听众的嫌疑。 但只是在其中加入了诸如日志记录,身份validation和路由等交叉问题。 例如,Hibernate参考文档使用侦听器来审计所有对象修改的日志。 一旦EJB侦听器可以使用实体管理器,它就可以由EJB侦听器(或非Java EE环境中的Spring AOP)完成。 Java EE规范允许它。 因此,EJB侦听器共享其目标EJB使用的相同ENC,并且这种方式也共享相同的持久性上下文(实体管理器)。

如果您愿意,请参阅我的个人资料。 我有很多与ORM相关的问题。

问候,