Hibernate的interceptors与events

本文介绍了Hibernate中拦截器和事件的基本概念及其使用方式。拦截器可在特定操作前对实体对象进行处理,而事件则允许应用程序对Hibernate的各种事件作出响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hibernate通过interceptors和events提供了响应Hibernate内部事件的机制。

1. interceptors的概念
Hibernate中拦截一定的方法调用并进行响应。
org.hibernate.Interceptor接口提供从session中回调应用的方法。
拦截器使得应用可以在执行saved, updated, deleted or loaded之前操作Entity对象。


2. 拦截器的分类:
  • Session-scoped interceptor,在Session打开时设置的拦截器
Session session = sf.interceptor( new MyInterceptor() ).openSession();

  • SessionFactory-scoped interceptor,在构造SessionFactory之前,通过Configuration对象设置的拦截器,适用于SessionFactory创建的所有Session(除非Session另外设置了拦截器)
new Configuration().setInterceptor( new MyInterceptor() );
...

sessionFactoryBuilder.applyInterceptor( new LoggingInterceptor() );

3. 定制实现拦截器类的方式:

  • 实现org.hibernate.Interceptor接口
  • 扩展org.hibernate.EmptyInterceptor类


4. events的概念
在持久层,通过EventListener响应一定类型的事件。
一种事件类型对应一种EventListener处理该类型的事件。
通常持久层的事件用于实现声明式安全设置,在发生某些操作之前进行安全检查。


5. events的类型
多数的Session方法都对应一种事件
事件类型的具体定义org.hibernate.event.spi.EventType枚举
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值