私が見ている直感に反する休止状態の動作を理解したいと思います。「フラッシュ」とは、休止状態のデータ構造がメモリ内にあり、DBに書き込む必要があることを意味するといつも思っていました。これは私が見ているものではありません。
次のインターセプターを作成しました。
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からDBから取得したすべての行について、コンソールに「postFlush」が書き込まれています。
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from Feed feed");
query.list();
何故ですか?