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事件监听器相关推荐

  1. spring 启动完成后事件监听器处理

    有时候我们在spring容器启动完成后,我们需要做一些处理动作,这个时候怎么做呢? spring提供了事件监听器的处理机制. spring提供了内置的几类的事件: ContextClosedEvent ...

  2. ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存

    ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate  : Hibernate是一个持久层框架,经常访问物理数据库 ...

  3. 手写简版spring --10--容器事件和事件监听器

    一.降低耦合 解耦场景在互联网开发的设计中使用的也是非常频繁,如:这里需要一个注册完成事件推送消息.用户下单我会发送一个MQ.收到我的支付消息就可以发货了等等,都是依靠事件订阅和发布以及MQ消息这样的 ...

  4. Java-GUI编程实战之管理系统 Day2【Swing(组件介绍、布局管理器、事件类及监听器类)、基础组件按钮和输入框的用法】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

  5. Spring管理Hibernate

    为什么要用Hibernate框架? 既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢? 首先我们来看一下Hibernate进行操作的步骤.比如添 ...

  6. 【spring】Spring事件监听器ApplicationListener的使用与源码分析

    ApplicationEvent以及Listener是Spring为我们提供的一个事件监听.订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性. ...

  7. Spring5源码解析-Spring中的异步事件

    上一篇 Spring框架中的事件和监听器并未对Spring框架中的异步事件涉及太多,所以本篇是对其一个补充. 同步事件有一个主要缺点:它们在所调用线程的本地执行(也就是将所调用线程看成主线程的话,就是 ...

  8. Spring中ApplicationContext的事件机制

    ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件 ...

  9. 整合Spring框架和Hibernate框架

    -------------------siwuxie095 整合 Spring 框架和 Hibernate 框架 1.导入相关 jar 包(共 28 个) (1)导入 Spring 的核心 jar 包 ...

最新文章

  1. asp.net js函数弹出登录窗口_JS基础 | Cocos Creator 开发环境搭建
  2. 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)
  3. 英特尔的指令集体系结构_对标英特尔的RISC-V大有可为,CPU三分天下格局可期
  4. Android 界面滑动实现---Scroller类 从源码和开发文档中学习(让你的布局动起来)...
  5. 串联矩阵matlab代码,Matlab串联矩阵函数【horzcat】详细解析
  6. java直线函数_java实现顺序结构线性列表的函数代码
  7. LeetCode 2086. 从房屋收集雨水需要的最少水桶数(贪心)
  8. python read函数报错_python 使用read_csv读取 CSV 文件时报错
  9. java字典序列化_在Python中解析序列化Java对象
  10. (专升本)PowerPoint(插入超链接和动作)
  11. 图像处理对数变换以及对数变换的拉伸
  12. 什么是SPU、SKU、SKC、ARPU
  13. 软件测试需要掌握哪些技术?
  14. css动画效果网站集合
  15. 智能音箱 功放与喇叭选型 参考
  16. 虹科喜报 | 虹科技术工程师【国内首批】拿下Redis认证开发者证书!
  17. linux下同一个tomcat部署多个项目 同一个端口
  18. PyPubMed|好用的免费文献检索神器
  19. 北京大学计算机学院陈鹏进,计算机科学技术系本科生在SIGCOMM 2020上发表高性能可见光反射互联技术论文...
  20. win10重置mysql密码_Win10系统MySQL5.7密码忘记怎么重置?

热门文章

  1. MySQL count()函数
  2. 秒杀系统设计的 5 个要点:前端三板斧+后端两条路
  3. 输入框限定保留三位小数点
  4. ajax读取文件未及时更新
  5. 在mysql中插入日期
  6. 阿卡姆疯人院需要java吗_蝙蝠侠阿甘疯人院 这个报错 怎么解决 哪位大神知道...
  7. com.mysql.jdbc.NotUpdatable: Result Set not updatable (references no primary keys).(解决方法)
  8. java异常——异常分类+声明已检查异常+如何抛出异常+自定义异常类
  9. Servlet其他关联类---ServletConfig类
  10. jakarta ee_MicroProfile在Jakarta EE时代的作用