【问题标题】:Can you access EntityManagers from EntityListeners?您可以从 EntityListeners 访问 EntityManagers 吗?
【发布时间】:2010-09-25 02:41:41
【问题描述】:

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

“一般来说,可移植应用程序不应该调用 EntityManager 或 Query 操作, 访问其他实体实例,或在生命周期回调方法中修改关系。"

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

是否有人在 Jboss/Glassfish 或任何其他应用程序服务器上的侦听器中使用 EntityManager 时遇到任何不利影响/坑?

【问题讨论】:

    标签: java jpa jakarta-ee entitymanager entitylisteners


    【解决方案1】:

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

    我不知道你的听众的目的。但只在其中放置诸如日志记录、身份验证和路由之类的横切关注点。例如,Hibernate 参考文档使用侦听器来审核所有对象修改的日志。一旦 EJB 侦听器可以使用实体管理器,它就可以由 EJB 侦听器(或非 Java EE 环境中的 Spring AOP)完成。 Java EE 规范允许它。因此,EJB 侦听器共享其目标 EJB 使用的相同 ENC,并且通过这种方式,也共享相同的持久性上下文(实体管理器)。

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

    问候,

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 2011-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多