我可以使用JDO流式传输查询结果吗?

时间:2012-09-17 11:02:30

标签: java jdo datanucleus

我想导出数据库中的所有对象(行)。它们不能同时适应内存,所以我想流式传输而不是一次性获取所有内容。哪种方法的内存占用量低? JDO(Datanucleus implementaion)是否支持流媒体?

在另一个项目中,我能够使用jdbc ResultSet和100的fetchsize来完成它。但是,如果可能的话,我想使用JDO的映射,而不是简单的JDBC implmenetation。

编辑:我忘了说:我为PersistenceManager使用强大的缓存,我可以禁用它吗?无论如何,数据都是只读的,无需保留。

编辑:查询代码:

调用Repository方法的服务方法使用Springs @Transactional(readonly = true)注释进行注释,persistenceManagerFactory是一个Spring代理,try-catch-finally处理省略,level1缓存已经说得很强:

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();
    }
}

1 个答案:

答案 0 :(得分:0)

结束评论:用JDO和level1 cache = strong解决不可能。我评估使用Spring JdbcTemplate进行此类查询。