【发布时间】:2012-10-30 15:49:04
【问题描述】:
我想了解我看到的一种反直觉的休眠行为。我一直认为“刷新”意味着休眠在内存中有一个必须写入数据库的数据结构。这不是我所看到的。
我创建了以下拦截器:
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();
为什么会这样?
【问题讨论】:
标签: spring hibernate readonly interceptor flush