我想导出数据库中的所有对象(行)。它们不能一次装入内存,所以我想流式传输它们而不是一次全部获取。哪种方法的内存占用少?JDO(Datanucleus 实现)是否支持流式传输?
在另一个项目中,我能够使用 jdbc ResultSet 和 100 的 fetchsize 来做到这一点。但是,如果可能的话,我想使用 JDO 的映射,而不是简单的 JDBC 实现。
编辑:我忘了说:我为 PersistenceManager 使用了强缓存,我可以禁用它吗?无论如何,数据都是只读的,不需要保留它。
编辑:查询代码:
调用Repository Method的服务方法用Springs注解@Transactional(readonly=true)注解,persistenceManagerFactory是Spring代理,try-catch-finally处理省略,已经说过的一级缓存强:
public class MyRepository extends AbstractRepository<MyItem> {
public Collection<MyItem> retrieve(Object value) {
return query("myfiel==:myvalue",value)
}
}
public class AbstractRepository<T> {
private Class<T> type;
private PersistenceManagerFactory persistenceManagerFactory;
public Collection<T> query(String query, Object value) {
return createManager().newQuery(type, query).execute(value);
}
public PersistenceManager createManager() {
return persistenceManagerFactory.getPersistenceManager();
}
}