我想了解我看到的一种反直觉的休眠行为。我一直认为“刷新”意味着休眠在内存中有一个必须写入数据库的数据结构。这不是我所看到的。
我创建了以下拦截器:
public class FeedInterceptor extends EmptyInterceptor
{
@Override
public void postFlush(Iterator entities)
{
System.out.println("postFlush");
}
}
在我的 ApplicationContext 中注册它
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="entityInterceptor">
<bean class="interceptor.FeedInterceptor"/>
</property>
</bean>
但是,奇怪的是,我看到从我的 DAO 中从数据库中检索到的每一行都写入控制台的“postFlush”:
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from Feed feed");
query.list();
这是为什么?