您可以从EntityListeners访问EntityManagers吗?

时间:2008-12-03 11:42:40

标签: java jpa java-ee entitymanager entitylisteners

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

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

这看起来非常严格。我们想要从EntityListener中访问EntityManager。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

的问候,