4

我知道 JSR-000220 Enterprise JavaBeans 3.0 Final Release (persistence) 规范指出:

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

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

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

4

1 回答 1

2

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

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

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

问候,

于 2009-07-26T18:11:39.037 回答