0

我想导出数据库中的所有对象(行)。它们不能一次装入内存,所以我想流式传输它们而不是一次全部获取。哪种方法的内存占用少?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();
    }
}
4

1 回答 1

0

总结评论:用 JDO 和 1 级缓存无法解决 = 强。我评估为此类查询使用 Spring JdbcTemplate。

于 2012-09-27T09:51:31.953 回答