Muz*_*uzy 9 java hibernate jpa jpa-2.0 jboss7.x
我在使用Hibernate事件监听器时喜欢PostDeleteEventListener, PostInsertEventListener, PostUpdateEventListener在插入,删除和更新期间执行一些操作.现在我想使用JPA监听器来执行此操作,因为如果我想从Hibernate移动到任何其他JPA提供程序,我的监听器应该工作.Hibernate监听器让我event可以从中获取事务并检查其是否已提交或回滚.JPA监听器只为我提供实体对象.现在我如何在JPA监听器中获取事务或会话或实体管理器?提前致谢!!我使用Jboss作为我的CMT.
从JPA 2.0开始不支持此功能.
在JPA 2.1(定义为Java EE 7)中,持久性提供程序将在托管环境(例如JBoss应用程序服务器)中将实体侦听器视为CDI bean.根据JPA 2.1规范的拟议最终草案,第96页:
当包含存档是bean存档时,Java EE环境中的实体侦听器类通过上下文和依赖注入API(CDI)[10]支持依赖注入.使用CDI注入的实体侦听器类还可以定义使用PostConstruct和PreDestroy注释注释的生命周期回调方法.在注入发生之后和实体侦听器实例分别被销毁之前,将调用这些方法
因此,在JPA 2.1中,如果您创建一个提供EntityManager的CDI生成器(只需使用@Produces注释@PersistenceContext字段),您就可以@Inject EntityManager进入侦听器.
与此同时,我不知道任何干净或愉快的解决方法.我能想到的"最糟糕的"事情是将EntityManager配置为绑定在JNDI中,然后通过侦听器内的JNDI查找来获取它.
| 归档时间: |
|
| 查看次数: |
11342 次 |
| 最近记录: |