java – 您可以从EntityListeners访问EntityManagers吗?

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

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

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

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

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

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

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

问候,

点赞