インスタンスに基づく大規模なプロジェクトコードで多数のエンティティを処理する場合、を使用してすべてのサービス実装とメソッドプロトタイプをリファクタリングせずに、参照のみをサポートするList<E>
非常に限定されたリスト実装を作成する必要があります。Iterator
ScrollableResults
List<E>
この実装は、私のIterableListScrollableResults.javaGistで利用できます。
また、定期的にHibernateエンティティをセッションからフラッシュします。これを使用する方法は次のとおりです。たとえば、アーカイブされていないすべてのエンティティをfor
ループ付きのテキストファイルとしてDBからエクスポートする場合です。
Criteria criteria = getCurrentSession().createCriteria(LargeVolumeEntity.class);
criteria.add(Restrictions.eq("archived", Boolean.FALSE));
criteria.setReadOnly(true);
criteria.setCacheable(false);
List<E> result = new IterableListScrollableResults<E>(getCurrentSession(),
criteria.scroll(ScrollMode.FORWARD_ONLY));
for(E entity : result) {
dumpEntity(file, entity);
}
それが役立つかもしれないことを願って