使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist

Posted

技术标签:

【中文标题】使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist【英文标题】:Configure Hibernate 4.3 with SessionFactory to use @PrePersist 【发布时间】:2014-07-28 14:20:57 【问题描述】:

我正在尝试通过此博客步骤来完成。

http://leakfromjavaheap.blogspot.com.es/2013/08/prepersist-and-preupdate-not-working.html

但是从 Hibernate 4.3 开始,hibernate-entitymanager.jar 中的 events 包被移除了。

另一方面,我一直在阅读有关拦截器和事件的信息。 http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#events

这只是实现@PrePersist 行为的两种方法吗?或者可以将@EntityListeners 注释与 SessionFactory 一起使用?虽然我更喜欢赢得 @PrePersist 注释兼容性。

提前谢谢你。

【问题讨论】:

嗨 Dani,我也在努力解决同样的问题。你有没有发现关于 jpa 回调处理程序的任何东西? 嗨 dheerajarora,这种方式没什么可做的,@PrePersist 只是与 EntityManager 兼容。为此,我不得不手动处理事务。问候。 【参考方案1】:

在 Hibernate 4 中,您可以使用 Integrator spi 方法。

虽然 hibernate 团队建议使用 JPA EntityManager,但有时您只想继续使用带有 JPA 注释的旧 SessionFactory。

    包含 org.hibernate:hibernate-entitymanager 作为依赖项(假设你使用的是 maven,pom sn-p 如下):

    org.hibernate休眠实体管理器4.*版本>依赖>

    创建休眠集成器注册文件/META-INF/services/org.hibernate.integrator.spi.Integrator 并通过粘贴以下内容注册 JpaIntegrator 以启用 JPA 事件注释:

    org.hibernate.jpa.event.spi.JpaIntegrator

参考: arkuarku.wordpress.com/2014/10/23/spring-hibernate4-enable-jpa-prepersistpreupdate-annotation-using-sessionfactroy/ 见:https://docs.oracle.com/javase/tutorial/sound/SPI-intro.htmlhttp://in.relation.to/2012/01/09/event-listener-registration/

【讨论】:

链接到外部站点将使此答案在链接断开后立即过时。是否有可能在这里描述这种方法?仅将链接保留在此处作为额外参考。 @langlan4744:我刚刚用 Hibernate 4.2 测试了这个,而不是把 org.hibernate.jpa.event.spi.JpaIntegrator 放在文件中,你应该把 org.hibernate.ejb.event.JpaIntegrator 放在. 这个解决方案效果很好!谢谢!! 这也适用于hibernate 5。还要确保导入的hibernate-entitymanager 版本与您的hibernate-core 版本相同,以避免出现神秘错误!

以上是关于使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist的主要内容,如果未能解决你的问题,请参考以下文章

Spring Hiernate整合

HibernateUtil

使用 SessionFactory 配置 Hibernate 4.3 以使用 @PrePersist

hibernate框架学习笔记5:缓存

配置自定义 HibernateItemWriter 时获取“必须提供 HibernateOperations 或 SessionFactory”

使用注解为HibernateDaoSupport注入sessionFactory (转)