當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
Spring管理的Hibernate事件监听器
生活随笔
收集整理的這篇文章主要介紹了
Spring管理的Hibernate事件监听器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hibernate提供事件監聽器作為其SPI的一部分。 您可以將您的偵聽器掛接到許多事件,包括插入前,插入后,刪除前,刷新等。
但是有時在這些偵聽器中,您想使用spring依賴項。 我之前已經寫過有關如何執行此操作的文章 ,但是休眠已升級,現在有了更好的方法(由于缺少類,舊方法在最新版本中不起作用)。
這次更簡單了。 您只需要一個看起來像這樣的bean:
@Component public class HibernateListenerConfigurer {@PersistenceUnitprivate EntityManagerFactory emf;@Injectprivate YourEventListener listener;@PostConstructprotected void init() {SessionFactoryImpl sessionFactory = emf.unwrap(SessionFactoryImpl.class);EventListenerRegistry registry = sessionFactory.getServiceRegistry().getService(EventListenerRegistry.class);registry.getEventListenerGroup(EventType.POST_INSERT).appendListener(listener);registry.getEventListenerGroup(EventType.POST_UPDATE).appendListener(listener);registry.getEventListenerGroup(EventType.POST_DELETE).appendListener(listener);} }它類似于這個stackoverflow的答案 ,但是它不起作用,因為它也依賴于過時的calscals。
您也可以注入List<..>偵聽器(盡管它們不共享公共接口,但是您可以定義自己的偵聽器)。
正如SO答案中指出的那樣,您不能在偵聽器中存儲新實體,因此,例如,注入DAO是沒有用的。 但是處理不依賴當前會話的信息可能會很方便。
翻譯自: https://www.javacodegeeks.com/2016/07/spring-managed-hibernate-event-listeners.html
總結
以上是生活随笔為你收集整理的Spring管理的Hibernate事件监听器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (ddos x86)
- 下一篇: gradle idea java ssm